zoukankan      html  css  js  c++  java
  • 设计模式-适配器模式和外观模式

    1.适配器模式

    适配器模式是针对接口不一时处理的情况,比如我的类的参数是IInterface1,但是我现在想要调用IInterface2接口的函数,怎么办呢?就是用适配器来解决这个问题:

    public interface IInterface1(){
        public void method1();
    }
    public interface IInterface2(){
        public void method2();
    }
    public class adapter implements IInterface1{
        IInterface2 v;
        public adapter(IInterface2 t){
            this.v=t;
        }
        public void method1(){
            v.method2();
        }
    }

    现在我们调用IIterface2的method1的方法的时候,就是可以直接构造一个适配器来完成

    public class A{
        
        public void method3(IInterface1 t)
        {
            t.method1();
        }
        
        public static void main(String[] arg)
        {
            (new A()).method3(new adapter(claimplementInterfce2));
        }
    }

    其中claimplementInterface2是实现Interface2的一个类的实例。这种适配器的方法被称作为对象适配器,还有一种适配器,叫做类适配器,是基于类的多继承的,其中适配器继承自要适配的两个类,用其中一个类的方法调用另一个类,思想是一致的,不过java不支持多继承,所以也就是只能用对象适配器。

    适配器模式:将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间

    2.外观模式

      外观模式,其实就是对一个子系统的方法进行整理,对外公开一些方法,方便外部的调用,但是并不是对这些类的一个封装,只是提供了一个简单的接口,用户如果觉得没什么用出,可以直接调用子系统的方法,而且,一个子系统可以有很多个外观。所以外观模式的定义如下

    外观模式:提供一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。

    比如我们用电脑,怎么开机,怎么关机呢:

    public class UseComputer{
        ZHUJI zhuji;
                    XIANSHIQI xianshiqi;
                ...
        public UseComputer(ZHUJI zhuji,XIANSHIQI xianshiqi,....)
        {
            this.zhuji=zhuji;
            this.xianshiqi=xianshiqi;
            .....
        }
        public void guanji()
        {
            zhuji.off();
            xianshiqi.off();
        }
        public void kaiji()
        {
            xianshiqi.on();
            zhuji.on();
        }
    }

    这样就直接提供给用户开机和关机的操作了,而不用用户自己去调用开机关机的一系列的方法了。

    3.设计原则

    最少知识原则:只和你的密友谈话

    需要做到这个原则,建议只调用一下的范围的方法:

    对象本身
    被当作方法的参数而传递进来的对象
    此方法所创建或实例化的任何对象
    对象的任何组组件
  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/xtestw/p/3955914.html
Copyright © 2011-2022 走看看