《设计模式 - 适配器模式》
周六上班,心痛的赶脚~
1:什么是适配器?
- 小李要去美国旅游了,到了之后发现,美国插座电压是 250V 的,自己的国产手机插上去肯定时不行的,这时小李有三种办法解决这个问题
1:强烈抗议美国没有 220V插座,要求美国必须在每个插座旁边在安装一个 220V插座。
2:自己在美国再买个手机,可以用 250V充电的那种。
3:买个转接头,可以把美国 250V的电压适配成 220V的。
- 你要选了 1,2 ,对不起,打扰了
- 通过上面的例子,引出了适配器的定义
- 适配器模式(Adapter),将一个类的接口换成客户端希望的另一个接口,Adapter 使得原本接口不兼容而不能在一起的类可以一起工作。
- 通俗的说,就是我希望可以通过这个接口访问另一个接口,使得这两个接口可以提供一套服务。
2:适配器的使用场景
- 使用了别人的插件,代码,服务,这时就需要有适配器,以防止其他人的改变导致自己的服务崩溃。
- 使用一个已经存在的类,但是你的要求和类不太相同时,应该考虑使用。
- 其实适配器大是多数更是一种无奈之举,产品的开发本身就是会改变的。
- 也就是说,使用原则是,在双方都不太容易修改的时候使用适配器。
3:适配器的实现
- 根据上面我们了解到,适配器需要三个角色,被适配对象,适配者,适配器
- 这里我们先写一个被适配对象
class operation1 { public function operation(){ echo '我是需要适配的对象,我的方法不太好改'; } }
- 适配器
class Adapter { public function operation() { $operation1 = new operation1(); $operation1->operation(); } }
- 适配者
$Adapter = new Adapter(); $Adapter->operation();
- 这里我们访问的 Adapter 其实是 operation1 ,这里适配了 operation
4:地址