大家周末好呀!今天想和大家谈一下女孩子!哦不是,外观模式。
啥是外观模式捏?它能干啥捏?有啥优缺点呢?
我们知道设计模式分为三大类,一类是创建型模式,第二类是结构型模式,最后一类是行为型模式。那外观模式是属于哪一种呢?听我细细道来。
外观模式是一种隐藏系统的复杂性,提供给客户端一个可以访问系统接口的设计模式。主要解决访问复杂系统内部子系统时的复杂度,客户端不需要知道服务端到底内部结构复杂与否,整个系统只需要提供给一个接待员即可,即像我们服务端提供给前端的接口一般。实现了客户端与系统的解耦,外观类与系统的耦合。
一个是说减少系统的依赖性,提供灵活性,安全性。
如何构建外观模式呢,首先是服务端这边一个系统的接口,和多个具体实现的系统类,一个对外展示的外观类,对应要访问系统的客户端。
相信大家看一眼都会了,咱们话不多说,直接开码!
类图:
具体代码实现:
public interface System {
/**
* 外部接口
*/
public void externalInterface();
/**
* 内部接口
*/
public void internalInterface();
}
public class SubSystem1 implements System {
@Override
public void externalInterface() {
java.lang.System.out.println("SubSystem1 externalInterface");
}
@Override
public void internalInterface() {
java.lang.System.out.println("SubSystem1 internalInterface");
}
}
public class SubSystem2 implements System {
@Override
public void externalInterface() {
java.lang.System.out.println("SubSystem2 externalInterface");
}
@Override
public void internalInterface() {
java.lang.System.out.println("SubSystem2 internalInterface");
}
}
public class SubSystem3 implements System {
@Override
public void externalInterface() {
java.lang.System.out.println("SubSystem3 externalInterface");
}
@Override
public void internalInterface() {
java.lang.System.out.println("SubSystem3 internalInterface");
}
}
public class SystemShower {
private System subSystem1;
private System subSystem2;
private System subSystem3;
public SystemShower() {
subSystem1 = new SubSystem1();
subSystem2 = new SubSystem2();
subSystem3 = new SubSystem3();
}
public void show() {
subSystem1.externalInterface();
subSystem2.externalInterface();
subSystem3.externalInterface();
}
}
public class Client {
public static void main(String[] args) {
SystemShower systemShower = new SystemShower();
systemShower.show();
}
}
/*
SubSystem1 externalInterface
SubSystem2 externalInterface
SubSystem3 externalInterface
*/
复制代码
看完代码,想必你已经知道外观模式是什么类型的设计模式了。是的,就是结构型模式了, 这类设计模式更关注类和对象的组合。
好了,本章节就到这里啦,希望对你有所帮助!
愿每个人都能带着怀疑的态度去阅读文章并探究其中原理。
道阻且长,往事作序,来日为章。
期待我们下一次相遇!