门面模式
目的
避免让你阅读复杂的API 文档
降低耦合性
原理
把多个对象,封装到门面里
将被封装对象的多个方法,封装到门面的一个方法里。
从而,调用门面的一个方法=调用被封装对象的多个方法。
而且可以通过调用不同方法,来使用不同的被封装对象完成同一功能。
UML
组合模式
适用于
一组对象与该对象的单个实例的处理方式一致。
UML
流接口模式……继续阅读 »
tianlan
4个月前 (10-25) 344浏览 0评论
0个赞
目的
抽象说法
(访问者)表示一个作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下,定义作用于这些元素的新操作。
访问者模式属于【行为型】设计模式。
说得明白点
访问者模式可以让你将对象操作外包给其他对象。这样做的最主要原因就是关注(数据结构和数据操作)分离。但是被访问的类必须定一个契约接受访问者。 (详见例子中的 Role::accept……继续阅读 »
tianlan
4个月前 (10-24) 285浏览 0评论
0个赞
前言
之所以把这几个模式放在一起,是因为他们同属于【结构型】设计模式,并且也很相似,让人难以区分。
代理模式
这个不用多说,对【被代理对象】进行访问控制,或者对其功能进行增强(不改变类的情况下添加一些额外的功能)。
装饰器模式
动态地给【被装饰对象】添加一些额外的职责。
桥接模式
将抽象与实现分离,这样两者可以独立地改变。
区别
使用方式
// 代理模式……继续阅读 »
tianlan
5个月前 (10-21) 260浏览 0评论
0个赞
建造者模式
建造者是创建一个复杂对象的一部分接口
【new 需要的类】这个过程在建造者中完成
由 Director 中的 build() 来调用 Builder 中的各个建造方法,并且返回目标对象
……继续阅读 »
tianlan
5个月前 (10-18) 374浏览 0评论
0个赞
前言
在学习设计模式的时候,各种工厂模式傻傻分不清让人头皮发麻,他们同属于【创建型】所以在这里小结一下。
学习参考:https://learnku.com/docs/php-design-patterns/2018
简单工厂
简单工厂模式是一个精简版的工厂模式。
它与静态工厂模式最大的区别是它不是『静态』的。因为非静态,所以你可以拥有多个不同参数的工厂,你可……继续阅读 »
tianlan
5个月前 (10-17) 221浏览 0评论
0个赞
通知/增强(Advice)
就是被织入的前置/后置操作等。
连接点(Joinpoint)
目标对象的所有可被代理的方法,就是可以应用 Advice 的地方。
切入点(Pointcut)
实际上要应用 Advice 的连接点(连接点是可以应用 Advice,可能应用也可能不应用,而切入点是一定会应用的)。
织入(Weaving)
就是将 Advice 应用到切……继续阅读 »
tianlan
10个月前 (05-12) 366浏览 0评论
0个赞
静态代理模式
①有一个接口
②目标类和代理类都要实现这个接口
动态代理模式
①有一个接口
②目标类实现接口,而代理类不实现
③代理类通过魔术方法+反射来调用目标类方法
swoft 中 aop 的实现
是通过动态代理实现的。
……继续阅读 »
tianlan
10个月前 (05-12) 314浏览 0评论
0个赞