注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淡忘邻人

二十七,始发愤

 
 
 

日志

 
 
 
 

Java与模式:适配器模式  

2010-11-22 21:18:54|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Java与模式:适配器模式
 
目的:
将一个类的接口转换成客户希望的另外一个接口。A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
 
意图:
  • 你想使用一个已经存在的类,而它的接口不符合你的需求。
  • 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
  • (仅适用于对象A d a p t e r )你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
     
    (目的和意图是不变的,摘自《设计模式迷你手册》电子版)
     
    下面是一个Java版的示例
     
    一、原理图:
     
    二、示例代码
    /**
    * Created by IntelliJ IDEA.
    * User: leizhimin
    * Date: 2008-8-2 14:43:46
    * 源角色
    */

    public class Adaptee {
        public int get220v(){
           return 220;
        }
    }
     
    /**
    * Created by IntelliJ IDEA.
    * User: leizhimin
    * Date: 2008-8-2 14:43:23
    * 目标角色
    */

    public interface Target {
        int get110v();
        int get220v();
    }
     
    /**
    * Created by IntelliJ IDEA.
    * User: leizhimin
    * Date: 2008-8-2 14:43:07
    * 适配器角色:扩展源角色,实现目标角色,从而使得目标角色改动时候,不用改动源角色,只要改动适配器
    */

    public class Adapter extends Adaptee implements Target{
        public int get110v(){
            return 110;
        }
    }
     
    /**
    * Created by IntelliJ IDEA.
    * User: leizhimin
    * Date: 2008-8-2 15:00:31
    * 客户端
    */

    public class Client {
        public static void main(String rags[]) {
            new Client().test();
        }

        public void test() {
            Target target = new Adapter();
            int v1 = target.get110v();
            int v2 = target.get220v();
        }
    }
     
    适配器通过扩展源角色,同时实现目标接口,从而满足了同时提供220v,110v电压的要求。
  •   评论这张
     
    阅读(280)| 评论(0)
    推荐 转载

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2017