php设计模式有哪些几种(php设计模式及应用场景)

php设计模式有哪些几种(php设计模式及应用场景)

  组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

  意图

  将对象组合成树形结构以表示”部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

  解决问题

  它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。

  UML图

  该模式包含的角色及其职责

  抽象根节点(Component)

  定义系统各层次对象的共有方法和属性,可以预先定义一些默认行为和属性。

  树枝节点(Composite)

  定义树枝节点的行为,存储子节点,组合树枝节点和叶子节点形成一个树形结构。

  叶子节点(Leaf)

  叶子节点对象,其下再无分支,是系统层次遍历的最小单位。

  在本例子中:

  优缺点

  优点

  复杂的对象分层次表示,添加新的节点容易。客户端调用简单,客户端可以一致的使用组合结构或其中单个对象。更容易在组合体内加入对象构件,客户端不必因为加入了新的对象构件而更改原有代码。

  缺点

  在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。使设计变得更加抽象,对象的业务规则如果很复杂,则实现组合模式具有很大挑战性,而且不是所有的方法都与叶子对象子类都有关联。

  应用场景

  当想表达对象的部分-整体的层次结构时,如公司的上下级关系,分销系统,产品品牌分类。希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象时。

  案例背景

  举一个例子:一家公司的组成通常都是多个部门组成的,现在我们有一家公司有多个部门,部门里面还有很多职位,我们用这个组合模式来看看。

  组织架构

  使用代码把上图转换成下图的形式表达

  应用场景

  Component. 抽象的公司架构(Component)

  Composite.php 具体的公司部门(Composite)

  Leaf.php 公司部门最终的职位(Leaf)

  调用代码:

  输出结果:

  如果觉得文章还不错,请把文章分享给更多的人学习,在文章中发现有误的地方也希望各位指出更正。现有误的地方也希望各位指出更正。

推荐阅读

    word组合快捷键|word快速组合

    word组合快捷键|word快速组合,,word快速组合在word中如何将两张图片合在一起只需一键【组合】即可完成。以下是详细介绍:在word中如何将两

    Python之可迭代对象、迭代器、生成器

    Python之可迭代对象、迭代器、生成器,迭代,生成器,一、概念描述可迭代对象就是可以迭代的对象,我们可以通过内置的iter函数获取其迭代器,可

    应用程序对象

    应用程序对象,,应用程序对象是一个应用程序级对象,用于在所有用户之间共享信息,并且在Web应用程序运行期间可以保存数据。 应用的性质: 方法

    取消组合的快捷键|取消组合的快捷键ps

    取消组合的快捷键|取消组合的快捷键ps,,取消组合的快捷键ps1,首先,在右下方的图层栏里,选中要打散的图形所在的图层。2,选好图层之后,在左侧工

    1.设计模式概述

    1.设计模式概述,模式,原则,[toc]1.为什么要使用设计模式使用设计模式可以重构整体架构代码、提交代码复用性、扩展性、减少代码冗余问题。

    Java创建对象的几种方式

    Java创建对象的几种方式,对象,方法,本文目录Java创建对象的几种方式java中几种创建对象的方式1Java中创建对象的集中方式有那些JAVA创建对

    电脑组合屏幕|电脑怎么组屏

    电脑组合屏幕|电脑怎么组屏,,1. 电脑怎么组屏主板上有两个连接显示器的 一个vga 一个是dvi 两个能同时使用,这个主板是可以支持双屏显示的,