zoukankan      html  css  js  c++  java
  • Adapter模式

    适配器模式,又称包装器(wrapper)模式,顾名思义,就是将类进行包装,然后适应新的需求,书中举的例子比较恰当,就是用电脑的电源转换器来举例子,书中举得例子是打印的例子:

    1,target:

    要实现的目标,就是电源能够正常的工作

    2,adapter

    转换器,将220V的电压转换为10v可工作的电压

    3,current

    现状,220v电压

    实现的思路有两个,一个是继承,另外一个是委托

    先说第一种方法,继承:

    思路:adapter要继承current类,这样才可以获取当前的方法,同时,要实现target接口,这样我们可以通过新建一个用adapter实现target的接口。

    代码如下

    target

    package ModelAdapter;
    
    public interface Printer {
        public abstract void printWeak(String str);
        public abstract void printBold(String str);
    }
    target

    adapter

    package ModelAdapter;
    
    public class PrintBaner extends Baner implements Printer{
    
        public void printWeak(String str) {
            showWeak(str);
        }
    
        public void printBold(String str) {
            showBold(str);
        }
    
    }
    adapter

    current

    package ModelAdapter;
    
    public class Baner {
        public void showWeak(String str){
            System.out.println("("+str+")");
        }
        public void showBold(String str){
            System.out.println("******"+str+"**********");
        }
    }
    current

    测试方法main类

    package ModelAdapter;
    
    public class Main {
    
        public static void main(String[] args) {
            Printer p = new PrintBaner();
            p.printBold("hello, world");
            p.printWeak("who are you?");
        }
    
    }
    main

    这里采用的是新建的接口为adapter实现的接口,这样实际调用的方法就是适配器的方法

    第二种方案就是使用委托

    什么是委托呢?顾名思义,就是根据将操作委托给别人来实行,这里,就是将target的操作委托给current进行操作,具体的如下

    此时的adapter就是一个委托,具体的代码如下

    package ModelAdapter;
    
    public class PrintDelegete implements Printer {
        private Baner baner;
        public void printWeak(String str) {
            baner.showWeak(str);
        }
    
        public void printBold(String str) {
            baner.showBold(str);
        }
    
    }
    adapter delegate

    上面就是适配器模式。

  • 相关阅读:
    其他
    聚类算法:ISODATA算法
    大神博客
    Fiddldr 教程之:HTTP协议详解(转)
    设计模式之装饰模式的复习
    NOIP 2011 聪明的质监员
    CSP-S2020/NOIP2020模板总结(Updating)
    CSP-S2020/NOIP2020复习指南
    洛谷 U137412 高斯的小宇宙
    NOIP2020模板测试题大全
  • 原文地址:https://www.cnblogs.com/ningheshutong/p/6592175.html
Copyright © 2011-2022 走看看