适配器模式
来源:互联网 发布:linux移动文件命令 编辑:程序博客网 时间:2024/06/05 03:39
类的适配器模式
假如需要使用程序中现有的某个类,且该类的接口不符合需求,但该类已经实现好了,为了不影响原有程序,不便对该类本身修改,这时可以用一个新的类继承原来的类,然后在新的类中去重载原来类的某些方法或添加一些新的方法。代码如下:
原有的类:
public class Person {
private String name;
private String sex;
private int age;
public void speakMyJapanese(){
System.out.println("I can speak Japanese!");
}
public void speakMyEnglish(){
System.out.println("I can speak English!");
}
}
private String name;
private String sex;
private int age;
public void speakMyJapanese(){
System.out.println("I can speak Japanese!");
}
public void speakMyEnglish(){
System.out.println("I can speak English!");
}
}
适配器接口:
public interface Job {
public abstract void speakJapanese();
public abstract void speakEnglish();
public abstract void speakFrench();
}
public abstract void speakJapanese();
public abstract void speakEnglish();
public abstract void speakFrench();
}
适配器:
public class Adapter extends Person implements Job{
public void speakJapanese() {
public void speakJapanese() {
....
speakMyJapanese();
....
}
}
public void speakEnglish() {
....
speakMyEnglish();
....
}
}
public void speakFrench() {
....
}
}
对象的适配器模式
不再继承原来的类,而是把原来的类作为新类的一个成员变量,这样可以通过该成员变量调用原来的方法,下面只给出适配器的代码:
public class Adapter implements Job {
Person person;
public Adapter(Person person) {
this.person = person;
}
public void speakEnglish() {
person.speakEnglish();
}
public void speakJapanese() {
person.speakJapanese();
}
//new add
public void speakFrench() {
Person person;
public Adapter(Person person) {
this.person = person;
}
public void speakEnglish() {
person.speakEnglish();
}
public void speakJapanese() {
person.speakJapanese();
}
//new add
public void speakFrench() {
...
}
}
}
}
类适配器与对象适配器比较
类的适配模式用于单一源的适配(一个类只能继承一个父类),由于它的源的单一,代码实现不用写选择逻辑,很清晰;而对象的适配模式则可用于多源的适配(可以包含多个类类型的成员变量),弥补了类适配模式的不足,使得原本用类适配模式需要写很多适配器(一个源类对应一个适配器)的情况不复存在,弱点是,由于源的数目可以较多,所以具体的实现条件选择分支比较多,不太清晰。 0 0
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 策略模式
- jQuery_统计图插件-fusioncharts-free
- 【跟随】Kirill Muzykov大神 Unity UGUI(1)
- Android基本概念
- 利用ajax和JSP技术实现网页中表单的局部刷新(只刷新表单数据,而不刷新整个页面)
- 适配器模式
- js window.onload 加载多个函数的方法
- 多线程
- iOS开发 - 苹果开发者账号那些事儿(三)
- POJ 2096 Collecting Bugs 期望DP
- __declspec(dllimport)
- jQuery_统计图插件-jfreechart
- android事件分发总结
- Python 巧用set()去重