diff --git a/notes/设计模式.md b/notes/设计模式.md index 4d952b67..3dc9c2aa 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.md @@ -1326,6 +1326,58 @@ public class Client { ## 5. 外观(Facade) +### 意图 + +提供了一个统一的接口,用来访问子系统中的一群接口,从而让子系统更容易使用。 + +### 类图 + +

+ +### 实现 + +```java +public class SubSystem { + public void turnOnTV() { + System.out.println("turnOnTV()"); + } + + public void setCD(String cd) { + System.out.println("setCD( " + cd + " )"); + } + + public void starWatching(){ + System.out.println("starWatching()"); + } +} +``` + +```java +public class Facade { + private SubSystem subSystem = new SubSystem(); + + + public void watchMovie() { + subSystem.turnOnTV(); + subSystem.setCD("a movie"); + subSystem.starWatching(); + } +} +``` + +```java +public class Client { + public static void main(String[] args) { + Facade facade = new Facade(); + facade.watchMovie(); + } +} +``` + +### 设计原则 + +最少知识原则:只和你的密友谈话。也就是客户对象所需要交互的对象应当尽可能少。 + ## 6. 享元(Flyweight) ### 意图 diff --git a/pics/f9978fa6-9f49-4a0f-8540-02d269ac448f.png b/pics/f9978fa6-9f49-4a0f-8540-02d269ac448f.png new file mode 100644 index 00000000..7da6d4b2 Binary files /dev/null and b/pics/f9978fa6-9f49-4a0f-8540-02d269ac448f.png differ