您的位置:首页 > 编程语言 > Java开发

java设计模式之Adapter模式 加个适配器以便于复用(1)

2017-05-09 23:55 543 查看

1.Adapter模式

分两种:

类适配器模式(使用继承的适配器)

对象适配器模式(使用委托的适配器)

2.示例(1)(使用继承的适配器)

示例程序是将一段字符串hello显示为(hello)或是hello的简单程序。

Banner类:有将字符串用括号括起来的showWithParen()和用星号将字符串括起来的showWithAster()。Banner相当于家用“实际”输入电压220V(不能满足手机充电的5V输入电压)。

Print接口:声明了两个方法,弱化字符串显示(加括号)的printWeak()和加强字符串显示(加星号)的printStrong()。Print接口相当于“需求”输入电压5V。

PrintBanner类:继承Banner类并实现Print接口。用showWithParen()实现printWeak(),用showWithAster()实现printStrong()。这样PrintBanner类就具有适配器功能了。

类图:



关系图:



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


Print.java

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


PrintBanner.java

public class PrintBanner extends Banner implements Print{
public PrintBanner(Stirng string){
super(string);
}
public void printWeak(){
showWithParen();
}
public void printString(){
showWithAster();
}
}


Main

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


运行结果:

(hello)

星hello星

这里将PrintBanner类的实例保存在了Print类型的变量中。在main中使用Print接口进行编程。对main而言,Banner类、showWithParen()和showWithAster()都被隐藏起来。就好像手机在5V下工作,并不知道实际上是220V。

敲黑板敲黑板

Main不知道PrintBanner是如何实现的,因此可以在部队Main进行修改的情况下改变具体实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  adapter 继承 对象