概述
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适用性
1.你想使用一个已经存在的类,而它的接口不符合你的需求。
2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口
可能不一定兼容的类)协同工作。
3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行
子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
参与者
1.Target
定义Client使用的与特定领域相关的接口。
2.Client
与符合Target接口的对象协同。
3.Adaptee
定义一个已经存在的接口,这个接口需要适配。
4.Adapter
对Adaptee的接口与Target接口进行适配
示例:
package com.sql9.structured;
// Target
interface Target
{
void newCall(String abc);
}
// Adaptee class
class Adaptee
{
public void sampleOpertion(String abc)
{
System.out.println("called for sampleOperation: " + abc);
}
}
// Adapter
class Adapter implements Target
{
Adaptee _a;
public Adapter(Adaptee a)
{
_a = a;
System.out.println("This is light adapter for object construction.");
}
public void newCall(String abc)
{
_a.sampleOpertion(abc);
}
}
// class Adapter
class HeavyAdapter extends Adaptee implements Target
{
public HeavyAdapter()
{
System.out.println("this is heavy adapter for class extend.");
}
public void newCall(String abc)
{
super.sampleOpertion(abc);
}
}
public class AdapterTest
{
/**
* @param args
*/
public static void main(String[] args)
{
Target t = new Adapter(new Adaptee());
t.newCall("新方法");
t = new HeavyAdapter();
t.newCall("新方法");
}
}
结果:
This is light adapter for object construction.
called for sampleOperation: 新方法
this is heavy adapter for class extend.
called for sampleOperation: 新方法
总结:
可以对象适配,也可以类适配,按照需要进行选择。
<script type="text/javascript"><!--
google_ad_client = "ca-pub-7104628658411459";
/* wide1 */
google_ad_slot = "8564482570";
google_ad_width = 728;
google_ad_height = 90;
//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
分享到:
相关推荐
JAVA-设计模式-结构型模式-适配器模式
c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
Java 设计模式3-结构型-适配器、组合、代理、外观
适配器模式(Adapter Pattern) 是作为两个不兼容接口之间的桥梁, 这种类型的设计模式属于结构型模式。 一些书籍也称适配器模式为缺省适配器模式(Default Adapter Pattern) 。 适配器模式主要分 为三类: 类...
创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...
JAVA-设计模式-结构型模式-外观模式
JAVA-设计模式-结构型模式-桥接模式
JAVA-设计模式-结构型模式-组合模式
JAVA-设计模式-结构型模式-代理模式
JAVA-设计模式-结构型模式-装饰模式
c++设计模式-结构型模式-代理模式,qt工程,c++源码,简单示例
JAVA-设计模式-结构型模式-享元模式
c++设计模式-结构型模式-组合模式;qt工程;c++简单源码; 组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系...
c++设计模式-结构型模式-桥接模式;qt工程,c++简单源码; 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度...
设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略...
从意图等几个方面较为详细的介绍设计模式中的结构型模式,同时介绍设计模式的几个原则
23种设计模式-结构型模式
c++设计模式-结构型模式-装饰器模式;QT工程;c++简单源码; 装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。
c++设计模式-结构型模式-外观模式;qt工程;c++简单源码; 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,...
c++设计模式-结构型模式-享元模式;qt工程;c++简单源码; 享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类...