设计模式——适配器模式

场景

美国交流电插头(2头)没法插到欧洲壁式插座(3孔)bash

解决方法是在中间环节用适配器转化下搞定。测试

意图

将一个借口转化成另外一个接口this

举例

代码

#spa

package designpattern.adapter;

public interface AmericanPlug {
    public void desc();
    public void func();
}

#code

package designpattern.adapter;

public interface EuropePlug {
    public void desc();
    public void func();
}

 

##blog

package designpattern.adapter;

public class AmericanPlugImpl implements AmericanPlug{
    public void desc() {
        System.out.println("American");
    }

    public void func()  {
        System.out.println("American two plug");
    }
}

##接口

package designpattern.adapter;

public class EuropePlugImpl implements EuropePlug{
    public void desc() {
        System.out.println("EuropePlug");
    }

    public void func() {
        System.out.println("EuropePlug three plug");
    }
}

 

###three

package designpattern.adapter;

public class AmericanAdapter implements EuropePlug{
    AmericanPlug americanPlug;

    public AmericanAdapter(AmericanPlug americanPlug) {
        this.americanPlug = americanPlug;
    }

    public void desc() {
        americanPlug.desc();
    }

    public void func() {
        System.out.println("Before adapter");
        americanPlug.func();
        System.out.println("After adapter");
    }
}

测试it

package designpattern.adapter;

public class Test {
    public static void main(String[] args) {
        System.out.println("AmericanPlug---------");
        AmericanPlug americanPlug = new AmericanPlugImpl();
        americanPlug.desc();
        americanPlug.func();


        System.out.println("\nEuropePlug---------");
        EuropePlug europePlug = new EuropePlugImpl();
        europePlug.desc();
        europePlug.func();

        System.out.println("\nAmericanAdapter---------");
        AmericanAdapter americanAdapter = new AmericanAdapter(americanPlug);
        americanAdapter.desc();
        americanAdapter.func();
    }
}

输出class

AmericanPlug---------
American
American two plug

EuropePlug---------
EuropePlug
EuropePlug three plug

AmericanAdapter---------
American
Before adapter
American two plug
After adapter

Process finished with exit code 0
相关文章
相关标签/搜索