23种经典设计模式的java实现_2_适配器模式

简介:
适配器模式的适用:
你想使用一个已经存在的类,而它的接口不符合你的需求。
你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口,那么对象适配器可以适配它的父类接口(仅适用于对象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=" huqimailto: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");
    }
}
 

     本文转自胡奇 51CTO博客,原文链接:http://blog.51cto.com/huqicto/280901,如需转载请自行联系原作者



相关文章
|
2天前
|
设计模式 算法 Java
设计模式在Java开发中的应用
设计模式在Java开发中的应用
14 0
|
9天前
|
设计模式 前端开发 Java
19:Web开发模式与MVC设计模式-Java Web
19:Web开发模式与MVC设计模式-Java Web
19 4
|
9天前
|
设计模式 存储 前端开发
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
24 4
|
9天前
|
设计模式 缓存 监控
JAVA设计模式之结构型模式
结构模型:适配器模型、桥接模型、过滤器模型、组合模型、装饰器模型、外观模型、享受元模型和代理模型。
20 3
|
13天前
|
设计模式 算法 Java
Java基础教程(19)-设计模式简述
【4月更文挑战第19天】设计模式是软件设计中反复使用的代码设计经验,旨在提升代码的可重用性、可扩展性和可维护性。23种模式分为创建型、结构型和行为型三类。创建型模式如工厂方法、抽象工厂、建造者、原型和单例,关注对象创建与使用的分离。结构型模式涉及对象组合,如适配器、装饰器、外观等,增强结构灵活性。行为型模式专注于对象间职责分配和算法合作,包括责任链、命令、观察者等。设计模式提供标准化解决方案,促进代码交流和复用。
|
7月前
|
设计模式 安全 Java
JAVA设计模式1:单例模式,确保每个类只能有一个实例
JAVA设计模式1:单例模式,确保每个类只能有一个实例
|
7月前
|
设计模式 存储 安全
【设计模式——学习笔记】23种设计模式——单例模式Singleton(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——单例模式Singleton(原理讲解+应用场景介绍+案例介绍+Java代码实现)
25 0
|
14天前
|
设计模式 安全 Java
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
|
27天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
16 1
|
5月前
|
设计模式 Java
Java设计模式【一】:单例模式
Java设计模式【一】:单例模式
29 0