设计模式 八、外观模式

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

依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象。针对接口编程,不要对实现编程。
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

猜你喜欢

转载自blog.csdn.net/weixin_45401129/article/details/114629328