`
huqi
  • 浏览: 92881 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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="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");
    }

}


分享到:
评论

相关推荐

    设计模式之适配器模式Java实现和类设计图

    适配器模式的Java实现版本,包含类适配器模式和对象适配器模式的实现,同时也包含两者的UML类图

    java设计模式之适配器模式

    java设计模式之适配器模式,希望对大家有所帮助。

    设计模式之适配器模式

    设计模式之适配器模式Java版 设计模式之适配器模式Java版 设计模式之适配器模式Java版 设计模式之适配器模式Java版

    Java 23种设计模式10适配器模式.pdf

    Java设计模式10适配器模式.pdf

    基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等

    基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等 Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式...

    java常用23中设计模式

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    JAVA设计模式(抽象类与适配器模式)

    什么是抽象:抽象是处理对象复杂性的一种技术,它只关注对象的主要细节而忽略了对象的次要细节。

    23种设计模式_Java实现

    java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享...

    java 23种设计模式.zip

    2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略...

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    设计模式--适配器模式java例子

    设计模式--适配器模式java例子

    java23种设计模式

    java23种设计模式,每一种模式都有详细的讲解,很全面,如果你想深入了解一下java23种设计模式,这会非常适合你的哦!上传乃为百度云连接,失效请留言。 内容: 001策略模式! N. B8 ~' D! f9 j+ g0 I 002观察者模式 ...

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    Java设计模式之适配器模式

    Java设计模式之适配器模式

    Java设计模式适配器模式代码架构

    Java设计模式适配器模式,组成模式、外观模式代码架构

    java 适配器模式

    java 设计模式 适配器模式,希望对大家理解设计模式有帮助

    Java实现适配器模式-设计模式

    适配器模式可以包括对象适配器和类适配器两种实现方式,上述示例中使用的是对象适配器方式。适配器模式能够提供代码的复用性、灵活性和扩展性,在面对已有功能部分需要改变或者增强的情况下,适配器模式能够提供一种...

    23种设计模式的java源代码

    里面包含了23中设计模式源代码,其中包括工厂模式(Factory)、单例(Singleton)、观察者...这些代码对于初学者看起来稍微复杂一些,我还有一个简易版的代码,标题为(23种设计模式的java源代码----容易理解的源代码)

    23种设计模式的java实现

    23种设计模式的java实现。创建型 抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html 工厂方法 http://www.cnblogs.com/java-my-life/archive/2012/03/25/2416227.html 建造者模式 ...

Global site tag (gtag.js) - Google Analytics