前几篇介绍了设计模式的特性而且详细讲解了4种建立型模式,建立型模式是负责如何产生对象实例的,接下来说讲结构型模式。设计模式
1、什么是结构型模式?
结构型模式是解析类和对象的内部结构和外部组合,经过优化程序结构解决模块之间的耦合问题。优化
2、结构型模式的种类:
适配器模式
桥接模式
装饰模式
组合模式
外观模式
享元模式
代理模式this
一、 适配器模式(Adapter)
将一个类的接口转换成客户但愿的另外一个接口,适配器模式使得本来的因为接口不兼容而不能一块儿工做的那些类能够一块儿工做。
应用场景:老代码接口不适应新的接口需求,或者代码不少很乱不便于继续修改,或者使用第三方类库。设计
代码实现代理
//老的代码 class User { private $name; function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } } //新代码,开放平台标准接口 interface UserInterface { function getUserName(); } class UserInfo implements UserInterface { protected $user; function __construct($user) { $this->user = $user; } public function getUserName() { return $this->user->getName(); } } $olduser = new User('张三'); echo $olduser->getName()."n"; $newuser = new UserInfo($olduser); echo $newuser->getUserName()."n"; 注意点:这里的新接口使用了组合方式,UserInfo内部有一个成员变量保存老接口User对象,模块之间是松耦合的,这种结构其实就是组合模式。不要使用继承,虽然UserInfo继承User也能达到一样的目的,可是耦合度高,相互产生影响。
公开课:http://www.ucai.cn/train?f=17code