首页>>企业动态
程序猿必须了解的8种设计模式
1. 单例模式
有些时候,允许自由创建某个类的示例没有意义,还可能造成系统性能下降(创建开销),不如这个类只能创建一个实例,那么就做成单例模式。
2. 工厂模式
a. 简单工厂
如果A类需要调用一个B类的方法,让B类实现一个IB接口,而A类与IB接口耦合——重新定义一个IBFactory,由该类来创建IB实例,用IB来创建并调用B类。
可以避免硬编码,提高可维护性和可扩展性。
b. 抽象工厂
“工厂的工厂”,可以让客户端的代码与被调用对象的实现类、具体的工厂类分离。
3. 代理模式
第一种情形:只要客户端不能或不想直接访问被调用对象(比如创建开销过大,或者对象的功能不足以满足需求,或者被调用对象在远程主机上),那么就创建一个代理对象返回给客户端适用;第二种情形是:当目标对象的功能不足以满足客户端需求时,系统可以创建一个代理对象,增强原目标对象的功能(如借助Proxy和InvocationHandler)
4. 命令模式
形参中包含一个函数的封装,类似回调机制。
5. 策略模式
实现一个策略类,用策略类来决定调用哪个类,类似多态。
6. 门面模式Facade
多加一层中间层,把一些需要按步骤依次调用的类方法封装到一起。
7. 桥接模式
把变化部分分离开来,从而将多个维度的变化彻底分离。最后提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。这个管理类就起到桥梁作用。
如书中举的例子:辣/不辣的牛肉/猪肉面。那么就把辣/不辣&猪肉/牛肉视为不同维度的变化而分离。
8. 观察者模式
类似事件监听机制。【全文完】
有些时候,允许自由创建某个类的示例没有意义,还可能造成系统性能下降(创建开销),不如这个类只能创建一个实例,那么就做成单例模式。
2. 工厂模式
a. 简单工厂
如果A类需要调用一个B类的方法,让B类实现一个IB接口,而A类与IB接口耦合——重新定义一个IBFactory,由该类来创建IB实例,用IB来创建并调用B类。
可以避免硬编码,提高可维护性和可扩展性。
b. 抽象工厂
“工厂的工厂”,可以让客户端的代码与被调用对象的实现类、具体的工厂类分离。
3. 代理模式
第一种情形:只要客户端不能或不想直接访问被调用对象(比如创建开销过大,或者对象的功能不足以满足需求,或者被调用对象在远程主机上),那么就创建一个代理对象返回给客户端适用;第二种情形是:当目标对象的功能不足以满足客户端需求时,系统可以创建一个代理对象,增强原目标对象的功能(如借助Proxy和InvocationHandler)
4. 命令模式
形参中包含一个函数的封装,类似回调机制。
5. 策略模式
实现一个策略类,用策略类来决定调用哪个类,类似多态。
6. 门面模式Facade
多加一层中间层,把一些需要按步骤依次调用的类方法封装到一起。
7. 桥接模式
把变化部分分离开来,从而将多个维度的变化彻底分离。最后提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。这个管理类就起到桥梁作用。
如书中举的例子:辣/不辣的牛肉/猪肉面。那么就把辣/不辣&猪肉/牛肉视为不同维度的变化而分离。
8. 观察者模式
类似事件监听机制。【全文完】
关键词标签: php设计模式
0 ([$-顶稿人数-$])
0 ([$-踩稿人数-$])
版权声明:
1、弈聪软件网站内容中凡注明“来源:XXX(非陕西弈聪网站)”的作品,转载自其它媒体,转载目的在于传递更多信息,其中涉及的网站建设,网站优化,APP开发,微信小程序开发,大数据平台开发,区块链技术开发等软件开发技术细节并不代表本站赞同支持其观点,并不对其真实性负责。对于署名“陕西弈聪”的作品系本站版权所有,任何人转载请署名来源,否则陕西弈聪将追究其相关法律责任。
2、本站内容中未声明为“原创”的内容可能源自其它网站,但并不代表本站支持其观点,对此带来的法律纠纷及其它责任与我方无关。如果此内容侵犯了您的权益,请联系我方进行删除。
企业动态