设计模式(6)------适配器模式
2016-09-28 09:55
295 查看
适配器模式作用:
将一个类的接口转换为客户希望的另外一个接口,使得不兼容的接口兼容在一起。
应用场景:
(1)当想使用一个已经存在的类,但是类的接口不符合需求;
(2)创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;
(3)不能对子类接口进行匹配时,可以通过适配器模式匹配其父类的接口;
参与对象:
(1)Adaptee
定义一个已经存在的接口,这个接口需要适配。
(2)Taget
定义Client使用的与特定领域相关的接口,目标接口,也可称为标准接口。
(3)Adapter
对Adaptee接口与Taget接口进行适配。
(4)Client
与符号Taget接口对象协同。
eg:
Adaptee
package com.lanhuigu.base.design.construct.adapter;
/**
* 已经存在,具有特殊功能,但是不符合我们已经存在的标准接口
*/
public class Adaptee {
public void adapteeMethod() {
System.out.println("将要被适配的类");
}
}
Target
package com.lanhuigu.base.design.construct.adapter;
/**
* 目标接口(标准接口)
*/
public interface Target {
void adapteeMethod();
void adapterMethod();
}
Adapter
package com.lanhuigu.base.design.construct.adapter;
/**
* 适配器: 将被适配类Adaptee与目标接口Adapter进行适配
*/
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
// TODO Auto-generated constructor stub
this.adaptee = adaptee;
}
@Override
public void adapteeMethod() {
// TODO Auto-generated method stub
adaptee.adapteeMethod();
}
@Override
public void adapterMethod() {
// TODO Auto-generated method stub
System.out.println("目标接口的方法");
}
}
Test
package com.lanhuigu.base.design.construct.adapter;
public class Test {
public static void main(String[] args) {
// 被适配器类
Adaptee adaptee = new Adaptee();
// 标准接口
Target target = new Adapter(adaptee);
// Adaptee 与 Adapter两个无关的类协同工作
target.adapteeMethod();
target.adapterMethod();
}
}
运行结果
将一个类的接口转换为客户希望的另外一个接口,使得不兼容的接口兼容在一起。
应用场景:
(1)当想使用一个已经存在的类,但是类的接口不符合需求;
(2)创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;
(3)不能对子类接口进行匹配时,可以通过适配器模式匹配其父类的接口;
参与对象:
(1)Adaptee
定义一个已经存在的接口,这个接口需要适配。
(2)Taget
定义Client使用的与特定领域相关的接口,目标接口,也可称为标准接口。
(3)Adapter
对Adaptee接口与Taget接口进行适配。
(4)Client
与符号Taget接口对象协同。
eg:
Adaptee
package com.lanhuigu.base.design.construct.adapter;
/**
* 已经存在,具有特殊功能,但是不符合我们已经存在的标准接口
*/
public class Adaptee {
public void adapteeMethod() {
System.out.println("将要被适配的类");
}
}
Target
package com.lanhuigu.base.design.construct.adapter;
/**
* 目标接口(标准接口)
*/
public interface Target {
void adapteeMethod();
void adapterMethod();
}
Adapter
package com.lanhuigu.base.design.construct.adapter;
/**
* 适配器: 将被适配类Adaptee与目标接口Adapter进行适配
*/
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
// TODO Auto-generated constructor stub
this.adaptee = adaptee;
}
@Override
public void adapteeMethod() {
// TODO Auto-generated method stub
adaptee.adapteeMethod();
}
@Override
public void adapterMethod() {
// TODO Auto-generated method stub
System.out.println("目标接口的方法");
}
}
Test
package com.lanhuigu.base.design.construct.adapter;
public class Test {
public static void main(String[] args) {
// 被适配器类
Adaptee adaptee = new Adaptee();
// 标准接口
Target target = new Adapter(adaptee);
// Adaptee 与 Adapter两个无关的类协同工作
target.adapteeMethod();
target.adapterMethod();
}
}
运行结果
相关文章推荐
- 结构型设计模式---Adapter模式(适配器模式)
- 设计模式[3] Adapter 适配器模式
- 设计模式c#语言描述——适配器模式
- Head First 设计模式之适配器模式学习
- Java设计模式之适配器模式
- 深入浅出Java设计模式之适配器模式
- 设计模式学习(七)适配器模式
- 设计模式1-适配器模式(Adapter)
- 设计模式 - Adapter Pattern(适配器模式)
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
- 结合实现谈设计模式——适配器模式
- 深入浅出Java设计模式之适配器模式
- 设计模式——适配器模式
- .NET设计模式-适配器模式(Adapter Pattern)
- Dot Net设计模式—适配器模式
- 设计模式c#语言描述——建造者模式、适配器模式、合成(Composite)模式
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
- Java设计模式之适配器模式
- .NET设计模式(8):适配器模式(Adapter Pattern)
- 设计模式(9)-适配器模式(Adapter)