当前位置: 代码迷 >> 综合 >> Facade, Mediator, Composite, Flyweight
  详细解决方案

Facade, Mediator, Composite, Flyweight

热度:68   发布时间:2024-01-14 04:15:41.0

1、Facade 外观/门面模式。

Facade就是抽象出对外的接口层,由此实现访问端和业务端的关联。外观 (Facade) 提供了一种访问特定子系统功能的便捷方式, 其了解如何重定向客户端请求, 知晓如何操作一切活动部件。

我觉得nginx其实就一个系统的Facade。

 

2、Mediator 中介者模式

Mediator跟Facade有点类似,Facade是外部访问者与系统内部组件之间解耦的, Mediator是系统内部子系统之间的解耦。

我觉得消息中间件MQ,注册中心eureka都算是Mediator

 

3、Composite组合模式

用来处理树状结构的。

https://note.youdao.com/yws/public/resource/3cffc4f2f5185a0d83050a1d59b9ec93/xmlnote/E9D7DA1DA377403D93CAF4FB9C039088/0C97E3270AF34D4DBEBC5490539BAD75/2046

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

https://note.youdao.com/yws/public/resource/3cffc4f2f5185a0d83050a1d59b9ec93/xmlnote/E9D7DA1DA377403D93CAF4FB9C039088/82357BCA8CD141E69E0EB42363A76D88/2047