适配器模式的适用:
你想使用一个已经存在的类,而它的接口不符合你的需求。
你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口,那么对象适配器可以适配它的父类接口(仅适用于对象Adapter)。
示例说明:
这个例子模拟了对一个特定组织系统——OrganizationAdaptee的适配。适配器OrganizationAdapter实现了适配接口IOrganization,从而使得客户端系统可以通过自己的接口IOrganization使用此组织系统——OrganizationAdaptee,而不需要耦合它的API。
package com.alex.designpattern.adapter;
import java.util.HashMap;
import java.util.Map;
/** *//**
* 适配器模式
* <p>
* 将一个类的接口转换成客户希望的另外一个接口。 <br>
* Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
*
* @author <a href="mailto:huqiyes@gmail.com">huqi</a>
* @serialData 2007
*/
public class Test ...{
public static void main(String[] args) ...{
Test test = new Test();
IOrganization org = new OrganizationAdapter();
String result = test.genericClientCode(org);
System.out.println("Using client, get result: " + result);
}
private String genericClientCode(IOrganization org) ...{
// We assume this function contains client-side code that only
// knows about IOrganization.
return org.getRole(4);
// other calls to IOrganization go here
// ...
}
}
interface IOrganization ...{
public String getRole(int id);
}
class OrganizationAdaptee ...{
public Map<String, String> queryRole(String id) ...{
System.out.println("Query a Role in the Adaptee Organization, id: "
+ id);
// query using id ... get result
Map<String, String> map = new HashMap<String, String>();
map.put("id", id);
map.put("name", "huqi");
map.put("type", "human");
return map;
}
}
class OrganizationAdapter implements IOrganization ...{
private OrganizationAdaptee adaptee = new OrganizationAdaptee();
public String getRole(int id) ...{
Map result = adaptee.queryRole(String.valueOf(id));
return result.get("id") + ", " + result.get("type") + ", "
+ result.get("name");
}
}
分享到:
相关推荐
本主题聚焦于"Adapter"设计模式,它是23种经典设计模式之一。 适配器模式(Adapter Pattern)的主要目的是解决两个不兼容接口之间的通信问题。它通过创建一个适配器类来包装原有的类,使得原本由于接口不兼容而无法...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不兼容的接口之间进行通信。在这个Java实现中,我们将深入探讨适配器模式的两大类型:类适配器模式和对象适配器模式,并通过具体的代码示例和...
适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...
适配器模式是一种结构型设计模式,它的主要作用是在不修改原有类的情况下,使两个接口不兼容的类能够协同工作。在Java中,适配器模式有两种形式:类适配器和对象适配器。类适配器模式通过继承目标接口和适配者类来...
“%5B尚硅谷%5D_宋红康_Java+之23种设计模式解析.pdf”这份资料详细讲解了每种模式的概念、实现方式、优缺点以及实际应用场景,是深入学习和掌握Java设计模式的好助手。通过阅读和实践,开发者将能够更熟练地运用...
《设计模式JAVA版_刘伟》是一本专为Java程序员准备的经典书籍,旨在帮助初学者和有经验的开发者深入理解并熟练运用设计模式这一开发技术。设计模式是软件工程中的重要概念,它代表了在特定场景下解决问题的最佳实践...
### Java设计模式之适配器模式详解 #### 结构型模式概述 在软件工程领域,设计模式被视为一种标准解决方案,用于解决在特定上下文中经常出现的问题。设计模式按其目的和适用场景,大致可分为三种类型:创建型模式...
以下是23种经典设计模式的概述及其在Java中的实现要点: 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。在Java中,可以使用枚举、双重检查锁定(DCL)或静态内部类等方式实现。 2. **...
以上就是23种设计模式的概述及其在Java中的实现方式。这些模式不仅有助于提高代码的可读性和可维护性,还能促进团队间的有效沟通,因为它们提供了共同的语言和解决问题的通用框架。在实际开发中,根据具体情况灵活...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,这种模式常被用来解决旧系统与新系统、第三方库或者不同组件之间的接口不匹配问题。适配器模式的核心思想是通过创建一个新的类...
本资料提供了23种设计模式的Java实现,是学习和理解设计模式的宝贵资源。 1. **单例模式(Singleton)**:保证一个类只有一个实例,并提供全局访问点。在Java中,可以通过双重检查锁定、静态内部类和枚举等方式实现...
基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等 Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...
JAVA 设计模式可以分为三种:创建模式、结构模式和行为模式。 1. 创建模式 创建模式是指在创建对象时使用的模式,包括 Factory(工厂模式)、Singleton(单例模式)、Builder(建造者模式)、Prototype(原型模式...
这个压缩包包含了全部23种经典的GoF(Gang of Four)设计模式的Java实现,对于学习和理解设计模式有着极大的帮助。 1. **单例模式**:保证一个类只有一个实例,并提供一个全局访问点。Java中的实现通常使用双重检查...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java编程中,这种模式常用于解决新旧系统之间的对接问题,或者是引入第三方库时接口不匹配的情况。适配器模式的核心思想是创建一个新的类...
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...
本篇将深入探讨Java中的23种经典设计模式。 首先,我们来看创建型模式,它们主要关注对象的创建过程,旨在简化对象的实例化,提高灵活性和抽象程度。具体包括: 1. **工厂方法模式**:提供一个接口用于创建某一类...
java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享...