两种方式实现适配器

1.通过继承的方式

2.通过组合的方式

 

package adapter;

/**
 * Print是客户需要使用的接口
 */
public interface Print {
    public void printWeak();
    public void printStrong();
}

 

package adapter;

/**
 * Banner是原始的接口
 */
public class Banner {
    private String string;
    
    public Banner(String string){
        this.string = string;
    }
    
    public void showWithParen(){
        System.out.println("("+string+")");
    }
    
    public void showWithAster(){
        System.out.println("*"+string+"*");
    }
}

 

package adapter;

/**
 * PrintBanner是适配器,将Banner适配为Print
 * 此种方式是运用继承的方式实现的适配器
 */
public class PrintBanner extends Banner implements Print {

    public PrintBanner(String string) {
        super(string);
    }

    @Override
    public void printWeak() {
        showWithParen();
    }

    @Override
    public void printStrong() {
        showWithAster();
    }

}

 

package adapter;
/**
 * 该种方式是使用委托(组合)的方式实现适配器
 * 
 */
public class PrintBanner2 implements Print{
    
    private Banner banner;
    
    public PrintBanner2(Banner banner){
        this.banner = banner;
    }
    
    @Override
    public void printWeak() {
        banner.showWithParen();
    }

    @Override
    public void printStrong() {
        banner.showWithAster();
    }

}
package adapter;
/**
 * 伟大的客户
 */
public class Client {
    public static void main(String[] args) {
        Print print = new PrintBanner("hello adapter model of inherit");
        print.printStrong();
        print.printWeak();
        
        
        Print print2 = new PrintBanner2(new Banner("hello adapter model of combination"));
        print2.printStrong();
        print.printWeak();
        
    }
}
运行结果:
*hello adapter model of inherit* (hello adapter model of inherit) *hello adapter model of combination* (hello adapter model of inherit)

  

posted @ 2015-08-06 17:07  克什米尔公子  阅读(221)  评论(0编辑  收藏  举报