设计模式学习(二)

结构设计模式:用于继承和接口时的设计模式。

1.适配器模式

定义:允许使用不同的接口重构某个类,可以允许使用不同的调用方式进行调用

特点:低耦合,高扩展,新增方法都在接口里实现

使用场景:你想使用一个已经存在的类,而它的接口不符合你的需求/你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作/你想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口(仅限于对象适配器)

适配器模式代码一
适配器模式代码二
适配器模式代码三

2.桥接模式

定义:是一种对象结构型模式,将抽象部分与实现部分分离,使它们都可以独立地变化

特点:多个类组合使用,类与类之间可函数调用时作为参数传入,也可以作为成员传入(重点在public $method)

使用场景:利用接口,将不同的类 组装一组有相同名称的方法 ,利用接口把 PDO mysql mysqli 封装成相同都数据库操作

桥接模式代码

3.组合模式

定义:用于将对象组合成树形结构以表示“部分-整体”的层次关系

特点:可灵活的组合部分

使用场景:如树形菜单、文件夹菜单、部门组织架构图等

组合模式代码

4.装饰器模式

定义:对已有对象的部分内容或者功能进行调整,但是不需要修改原始对象结构

特点:不用修改原始代码,在装饰器类类中继续利用原类的变量和方法

使用场景:多用于代码是别人所写,但是此人已离职,现在需要新增新功能,然后就可以在不用他人代码的时候添加进新的功能

装饰器模式代码

5.门面模式

定义:把几个子系统(实例或者类.统一一个统一的接口进行执行,客户端不用关注子系统,只用门面即可 )

特点:类的实例在门面类中进行

使用场景:比如Yii中操作DB类,我们不用管db类,而是直接使用链式查询

门面模式代码一
门面模式代码二

6.代理模式

定义:为其他对象提供一种代理以控制对这个对象的访问

特点:代理对象可以在客户端和目标对象之间起到中介的作用

使用场景
代理模式代码

7.享元模式

定义:运用共享技术有效的支持大量细粒度的对象

特点:如果类的实例化对象相同时,节省开支,不再创建实例,而是用同一个

使用场景:需要创建同一个类多个实例化时

该模式和单例模式的区别,单例模式一个类只能有一个对象,享元模式可以有多个,但是不能重复

享元模式代码
代码执行结果

你可能感兴趣的:(设计模式学习(二))