diff --git a/notes/设计模式.md b/notes/设计模式.md index 8ef019ba..fcbfac84 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.md @@ -756,7 +756,7 @@ MarinaraSauce 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

**3. 懒汉式-线程不安全** @@ -867,11 +867,11 @@ if (uniqueInstance == null) { - RemoteLoader 是客户端,应该注意它与 RemoteControl 的区别。因为 RemoteControl 不能主动地调用自身的方法,因此也就不能当成是客户端。客户端好比人,只有人才能去真正去使用遥控器。 -

+

**4. 模式类图** -

+

**5. 代码实现** @@ -958,14 +958,20 @@ Light is on! 将一个类的接口,转换为客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。 -

+

**2. 模式类图** -有两种适配器模式的实现,一种是对象方式,一种是类方式。对象方式是通过组合的方法,让适配器类(Adapter)拥有一个待适配的对象(Adaptee),从而把相应的处理委托给待适配的对象。类方式用到多重继承,Adapter 继承 Target 和 Adaptee,先把 Adapter 当成 Adaptee 类型然后实例化一个对象,再把它当成 Target 类型的,这样 Client 就可以把这个对象当成 Target 的对象来处理,同时拥有 Adaptee 的方法。 +适配器模式有两种实现方式,一种是对象方式,一种是类方式。 + +对象方式是通过组合的方法,让适配器类(Adapter)拥有一个待适配的对象(Adaptee),Adapter 把操作委托给 Adaptee。

+ +类方式用到多重继承,Adapter 继承 Target 和 Adaptee,先把 Adapter 当成 Adaptee 类型然后实例化一个对象,再把它当成 Target 类型的,这样 Client 就可以把这个对象当成 Target 的对象来处理,同时拥有 Adaptee 的方法。 + +

**3. 问题描述** diff --git a/pics/da5dbeae-f247-400b-84d8-af48f0241bc9.png b/pics/da5dbeae-f247-400b-84d8-af48f0241bc9.png new file mode 100644 index 00000000..b06e1ef1 Binary files /dev/null and b/pics/da5dbeae-f247-400b-84d8-af48f0241bc9.png differ