概述
将一个类的接口转换成客户希望的另外一个接口。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>
分享到:
相关推荐
结构型模式涉及如何组合类和对象以获得更大的结构,如代理模式(Proxy)、装饰模式(Decorator)和适配器模式(Adapter)。代理模式为其他对象提供一种代理以控制对这个对象的访问;装饰模式可以在不影响其他对象的...
适配器设计模式是一种结构型设计模式,它允许不同的类协同工作,即使它们的接口不兼容。适配器模式的关键在于将一个类的接口转换成客户端期望的另一种接口,从而使得原本由于接口不兼容而不能一起工作的类能够协同...
这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入...
结构型模式如适配器(Adapter)、装饰器(Decorator)和代理(Proxy),主要处理类与类之间的关系,增强系统的设计结构。行为型模式如策略(Strategy)、观察者(Observer)和责任链(Chain of Responsibility),...
这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入...
设计模式Golang实现《研磨设计模式》读书笔记Go语言设计模式Go语言设计模式的实例代码创建模式工厂简单模式(Simple Factory)工厂方法模式(工厂方法)抽象工厂模式(Abstract Factory)创建者模式(Builder)原型...
本篇笔记主要涵盖了创建型和结构型两种设计模式。 首先,我们来看看创建型模式。创建型模式主要关注对象的创建,它们提供了一种方式来封装对象的创建过程,使得代码更加灵活,易于扩展。 1. 抽象工厂(Abstract ...
- 结构型模式:如适配器(Adapter)、桥接(Bridge)、组合(Composite)、装饰(Decorator)、外观(Facade)、享元(Flyweight)和代理(Proxy)。这些模式关注如何组合和组织类与对象,以达到更好的结构和解耦。...
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...
本文主要关注的是Java编程语言中的设计模式,结合“Java与模式-笔记二”的博客内容,我们将深入探讨其中的一些核心设计模式及其在实际开发中的应用。 首先,我们来谈谈单例模式(Singleton)。单例模式确保一个类...
这份由台湾作者编写的笔记,结合Java语言,为读者提供了一种深入理解并应用设计模式的方式。以下是对这些设计模式的详细解释: 1. **创建型模式(Creational Patterns)** 创建型模式关注于对象的创建过程,它们帮助...
首先,23种设计模式按照其作用可以分为三大类:创建型模式、结构型模式和行为型模式。 1. **创建型模式**(Creational Patterns): - 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - ...
2. **结构型模式**:处理对象的组合,封装复杂的关联关系为简单的接口,使得设计更为灵活。 - **适配器模式**(Adapter):将一个类的接口转换为客户期望的另一个接口。 - **桥接模式**(Bridge):将抽象与其实现...
- **结构型模式**:如适配器(Adapter)、桥接(Bridge)、组合(Composite)、装饰(Decorator)、外观(Facade)、代理(Proxy)和享元(Flyweight),它们关注如何组织类和对象,以形成更大的结构。 - **行为型...
2. 结构型模式:包括适配器模式(Adapter)、桥接模式(Bridge)、装饰模式(Decorator)、组合模式(Composite)、外观模式(Facade)、享元模式(Flyweight)和代理模式(Proxy)。它们处理对象之间的关系,如组合...
结构型模式如适配器(Adapter)、装饰器(Decorator)和代理(Proxy)等,关注如何组合和构建类或对象,以达到功能扩展或接口匹配的目的。行为型模式如策略(Strategy)、观察者(Observer)和职责链(Chain of ...
2. **结构型模式**(Structural Patterns):主要关注如何组合类和对象以实现更大的结构,包括适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、...
### 设计模式学习笔记 #### 引言 设计模式(Design Patterns)是在软件设计领域内广泛应用的一种实践指南,它提供了一系列解决常见问题的方案。设计模式可以被理解为面向对象软件设计的经验总结,是对特定面向对象...
结构型模式涉及如何组合类和对象,比如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy)。行为型模式则关注对象之间的交互,例如观察者模式(Observer)、策略模式(Strategy)和模板方法模式...