梦幻之旅

DEBUG - 天道酬勤

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  671 随笔 :: 6 文章 :: 256 评论 :: 0 Trackbacks
适配器模式
    将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    对软件系统中,如果要复用以前的“现存对象”,但是这些对象所提供的接口并不一定能适应我们的新环境,我们就要将其转换成我们需要的接口,来供我们调用。 Adapter模式通过定义一个新的接口(对要实现的功能加以抽象),和一个实现该接口的Adapter(适配器)类来透明地调用外部组件。这样替换外部组件时,最多只要修改几个Adapter类就可以了,其他源代码都不会受到影响。

适配器模式的几个组成部分:
   1.目标接口,被适应的接口,最终会被适成该接口.
   2.被适应接口,是需要配的接口.
   3.适配器

酡配器模式(对象适配器)的各个部份的关系

 适配器的分为适器器和对象适配器:

 2种模式嫁接的方式不同。

      类适配器模式采用的是多重继承的方式

      class Adapter extends Adaptee implements Target{

            request(){this.SpecificRequest();}

            ....

     }

      对象适配器采用的是包含的方式

      class Adapter implements Taget{

           Adaptee adaptee;

           request(){adaptee.SpecificRequest();}

           ...

       }

      两者的区别我认为有以下几点

      1.类适配器模式需要创建自身来创建一个Adaptee,

        对象适配器模式可以直接使用一个已有的Adaptee的实例来转换接口。

      2. 类适配器继承了Adaptee,所以可以通过覆写来扩展SpecificRequest()

        对象适配器和Adaptee是包含关系不能扩展;(其实也可以扩展的见下面)

      3.类适配器模式因为是继承所以相对静态,而对象适配器模式是包含是组合相对灵活(可以通过写adaptee子类扩展功能)


适配器举例:
两相电插座接口:
package adapter;

public interface TwoElectricOutLet
{   
    
public  void connectTwoElectricCurrent();
}


三相电插座接口:
package adapter;

/**
 * <ul>
 * <li>Title:[ThreeElectricOutlet]</li>
 * <li>Description: [三相电插座]</li>
 * <li>Copyright 2009 Upengs Co., Ltd.</li>
 * <li>All right reserved.</li>
 * <li>Created by [Huyvanpull] [2011-7-28]</li>
 * <li>Midified by [modifier] [modified time]</li>
 * </ul>
 * 
@version 1.0  
 
*/

public interface ThreeElectricOutlet
{   
    
/**
     * <ul>
     * <li>Description:[连接三相电]</li>
     * <li>Created by [Huyvanpull] [2011-7-28]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     
*/

    
public  void connectThreeElectricCurrent();
}



对象适配器
package adapter;

public class TreeElectricAdapter implements ThreeElectricOutlet
{
    TwoElectricOutLet twoElectricOutlet;
    
    
public TreeElectricAdapter(TwoElectricOutLet twoElectricOutlet)
    
{
        
this.twoElectricOutlet = twoElectricOutlet;
    }

    
public void connectThreeElectricCurrent()
    
{
        System.out.print(
"变压器");
        
this.twoElectricOutlet.connectTwoElectricCurrent();
    }
   

}



双向适配器:
    适配器同时能适配目标接口和被适配接口

适配器模式的优点:
   1.适配都和被适配者是一种松耦合的关系.
   2.符合开闭原则
posted on 2011-07-28 03:34 HUIKK 阅读(339) 评论(0)  编辑  收藏 所属分类: Design Patterns

只有注册用户登录后才能发表评论。


网站导航: