首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Adaptor-适配器模式-一

2012-10-30 
Adaptor-适配器模式-1作用:适配器(也叫Wrapper-包装器)将一个类的接口转换成客户希望的另外一个接口,使得

Adaptor-适配器模式-1

作用:适配器(也叫Wrapper-包装器)将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。也就是将“既有内容”转换成“需要结果”,是代码重用的利器之一,Java I/O中应用了这种模式(如ByteArrayInputStream、ByteArrayOutputStream)。形象地:就如同笔记本电脑的电源适配器,一端是220交流电(既有内容),另一端12v直流电(需要结果)。

?

分类:Adaptor模式有两种,类适配器(继承)、对象适配器(委托)?。两种模式各有优劣,具体在代码解析中说明。

?

?示例-类适配器(继承):

?

电源

程序示例

既有内容

交流电220V

Banner类(showWithParen,shoWithAster)

转换装置

适配器

PrintBanner类

需要的结果

直流电12V

Print接口 (PrintWeak,PrintStrong)

?类图查看图片附件:类图-Adapter_1

//------------------------------------------Banner类---------------------------

package adapter;

public class Banner{
?private String strings;
?public Banner(String strings){
??this.strings = strings;
?}
?public void showWithParen(){
?? System.out.println("("+strings+")");
?}
?public void showWithAster(){
??System.out.println("*"+strings+"*");
?}
}

//------------------------------------------PrintBanner类---------------------------

package adapter;
public class PrintBanner extends Banner implements Print{
?public PrintBanner(String strings){
??super(strings);//父类构造函数来初始化~~
?}
?public void printWeak(){
??showWithParen();
?}
?public void printStrong(){
??showWithAster();
?}
}

//------------------------------------------Print接口---------------------------

package adapter;

public interface Print{
?public abstract void printWeak();
?public abstract void printStrong();
}

//------------------------------------------测试类---------------------------

public class Main{
?public static void main(String[] args){
??Print p = new PrintBanner("Hello");
??p.printWeak();
??p.printStrong();
?}
}

?示例-对象适配器(委托):

?类图查看图片附件:类图-Adapter_2

?

//------------------------------------------Banner类---------------------------

??? 同上

//------------------------------------------PrintBanner类---------------------------

package adapter;
public class PrintBanner extends Print{

?????? private Banner banner;

?????? public PrintBanner(String strings){

????????????? this.banner = new Banner(strings);

?????? }

?????? public void printWeak(){

????????????? banner.showWithParen();

?????? }

?????? public void printStrong(){

????????????? banner.showWithAster();

?????? }

}

//------------------------------------------Print类---------------------------

package adapter;

public interface Print{
public abstract class Print{

??? public abstract void printWeak();

??? public abstract void printStrong();

}

//------------------------------------------测试类---------------------------

同上

热点排行