From ee8b7f83756eb9075e486f63e6ac77a984668b82 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Fri, 16 Mar 2018 22:59:06 +0800 Subject: [PATCH] auto commit --- notes/设计模式.md | 16 +++++++++++----- pics/da5dbeae-f247-400b-84d8-af48f0241bc9.png | Bin 0 -> 15360 bytes 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 pics/da5dbeae-f247-400b-84d8-af48f0241bc9.png 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 0000000000000000000000000000000000000000..b06e1ef13c465873d97c02089ffb58eb04abbd90 GIT binary patch literal 15360 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 literal 0 HcmV?d00001