设计模式 八、外观模式

本文介绍了软件设计中的外观模式,该模式通过提供统一接口简化了子系统的使用,并探讨了依赖倒转原则和迪米特法则的应用,展示了如何通过具体实例实现这些设计思想。

外观模式:
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象。针对接口编程,不要对实现编程。
A.高层模块不应该依赖底层模块,两个都应该依赖抽象。
B.抽象不应该依赖细节,细节应该依赖抽象。

迪米特法则:
如果两个类之间不必彼此通信,那么这两个类就不应该发送直接的相互作用。如果其中一个类需要调用另一个类的某一个方法,可以通过第三者转发这个调用。

外观模式完美地体现了依赖倒转原则和迪米特法则的思想。

public class SystemOne {
    public void methodOne() {
        System.out.println("子系统方法1");
    }
}

public class SystemTwo {
    public void methodTwo(){
        System.out.println("子系统方法2");
    }
}

public class SystemThree {
    public void methodThree() {
        System.out.println("子系统方法3");
    }
}

//外观类,它需要了解所有子系统的方法或属性,进行组合,以备外界调用
public class Facade {
    private SystemOne systemOne;
    private SystemTwo systemTwo;
    private SystemThree systemThree;

    public Facade() {
        systemOne = new SystemOne();
        systemTwo = new SystemTwo();
        systemThree = new SystemThree();
    }

    public void MethodA() {
        System.out.println("方法组A");
        systemOne.methodOne();
        systemTwo.methodTwo();
    }

    public void MethodB() {
        System.out.println("方法组B");
        systemOne.methodOne();
        systemThree.methodThree();
    }

    public void MethodC() {
        System.out.println("方法组C");
        systemOne.methodOne();
        systemTwo.methodTwo();
        systemThree.methodThree();
    }

    public static void main(String[] args) {
        Facade facade = new Facade();

        facade.MethodA();
        facade.MethodB();
        facade.MethodC();
    }
}

输出:

方法组A
子系统方法1
子系统方法2
方法组B
子系统方法1
子系统方法3
方法组C
子系统方法1
子系统方法2
子系统方法3

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值