1、Facade 外观/门面模式。
Facade就是抽象出对外的接口层,由此实现访问端和业务端的关联。外观 (Facade) 提供了一种访问特定子系统功能的便捷方式, 其了解如何重定向客户端请求, 知晓如何操作一切活动部件。
我觉得nginx其实就一个系统的Facade。
2、Mediator 中介者模式
Mediator跟Facade有点类似,Facade是外部访问者与系统内部组件之间解耦的, Mediator是系统内部子系统之间的解耦。
我觉得消息中间件MQ,注册中心eureka都算是Mediator
3、Composite组合模式
用来处理树状结构的。
4、Flyweight 享元模式
共享元素,如果程序中创建了很多对象,而且这些对象有很多重复的属性的话,重复的属性建议抽象出单独的对象使用享元模式,而其他可变的属性抽象出可变的对象,引用重复属性的对象即可。
线程池其实是一种享元模式。 String也是用了享元模式。对于String常量,会放到常量池,具体的引用直接指向常量池。
public class TestString {public static void main(String[] args) {String s1 = "abc";String s2 = "abc";String s3 = new String("abc");String s4 = new String("abc");System.out.println(s1 == s2);System.out.println(s1 == s3);System.out.println(s1 == s3.intern());System.out.println(s3 == s4);System.out.println(s3.intern() == s4.intern());}
}
结果是:
true
false
true
false
true