zoukankan      html  css  js  c++  java
  • 适配器模式

      适配器是什么? 我理解的是就像生活中的插口转换器, 本来是USB接口的,你要想使用直流电,就得接上一个转换器。

    用书上的例子举例:

      比如,在一个画图的小程序中,你已经实现了绘制点、直线、方块等图形的功能。而且为了让客户程序在使用的时候不用去关心它们的不同,还使用了一个抽象类来规范这些图形的接口。现在你要来实现圆的绘制,这时你发现在系统其他的地方已经有了绘制圆的实现。在你庆幸之余,发现系统中已有的方法和你在抽象类中规定的方法名称不一样!这可怎么办?修改绘制圆的方法名,就要去修改所有使用它的地方;修改你的抽象类的方法名,也要去修改所有图形的实现方法以及已有的引用。还有其它的方法没有?那就是适配器模式了。

    适配器的组成:

    目标角色: 定义client使用的接口。

    被适配角色:这个角色有一个已经存在并使用了的接口,而这个接口是需要我们适配的。

    适配器角色:它将“被适配角色”已经有的接口转换成为目标橘色希望的接口。

    代码:

    class Circle extends Shape
    {
        //这里引用了TextCircle
       private TextCircle tc;
       public Circle ()
       {
            tc= new TextCircle(); //初始化
       }
        void public display()
       {
            tc.displayIt(); //在规定的方法里面调用TextCircle 原来的方法
       }
    }

    Target(目标角色)就是Sharp类,Circle就是适配器角色, TextCircle就是被适配器角色。


    适配器模式和代理模式很类似,书上解释“两者的主要区别在于代理模式应用的情况是不改变接口命名的,而且是对已有接口功能的一种控制;而适配器模式则强调接口转换。”

    不是很明白,期待以后对代理模式能更深入了解吧。

  • 相关阅读:
    Python服务Debian打包新思路
    小议Python3的原生协程机制
    推送公司今日菜单内容到手机
    Python包管理工具小结
    PAT 1068. 万绿丛中一点红
    PAT 1067. 试密码
    PAT 1066. 图像过滤
    PAT 1065. 单身狗
    PAT 1064. 朋友数
    PAT 1063. 计算谱半径
  • 原文地址:https://www.cnblogs.com/chenyao/p/3025768.html
Copyright © 2011-2022 走看看