php与设计模式-合成模式

php-合成模式实现 将对象组合成树形结构以表示”部分-整体”的层次结构。Composite使用户对单个对象和组合对象的使用具有一致性。 Composite变化的是一个对象的结构和组成。 阅读详情

合成模式

合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和有他们复合而成的合成对象同等看待。
用户复制文件及文件夹都是同样的操作。

Demo

/**
* 抽象组件角色
*/
interface Component {
   /**
    * 返回自己的实例
    */
   public function getComposite();
   /**
    * 示例方法
    */
   public function operation();
}
/**
* 树枝组件角色
*/
class Composite implements Component {
   private $_composites;
   public function __construct() {
       $this->_composites = array();
   }
   public function getComposite() {
       return $this;
   }
   /**
    * 示例方法,调用各个子对象的operation方法
    */
   public function operation() {
       echo 'Composite operation begin:<br />';
       foreach ($this->_composites as $composite) {
           $composite->operation();
       }
       echo 'Composite operation end:<br /><br />';
   }
   /**
    * 聚集管理方法 添加一个子对象
    * @param Component $component 子对象
    */
   public function add(Component $component) {
       $this->_composites[] = $component;
   }
   /**
    * 聚集管理方法 删除一个子对象
    * @param Component $component 子对象
    * @return boolean 删除是否成功
    */
   public function remove(Component $component) {
       foreach ($this->_composites as $key => $row) {
           if ($component == $row) {
               unset($this->_composites[$key]);
               return TRUE;
           }
       }
       return FALSE;
   }
   /**
    * 聚集管理方法 返回所有的子对象
    */
   public function getChild() {
       return $this->_composites;
   }
}
class Leaf implements Component {
   private $_name;
   public function __construct($name) {
       $this->_name = $name;
   }
   public function operation() {
       echo 'Leaf operation ', $this->_name, '<br />';
   }
   public function getComposite() {
       return null;
   }
}
/**
* 客户端
*/
class Client {
   public static function main() {
       $leaf1 = new Leaf('first');
       $leaf2 = new Leaf('second');
       $composite = new Composite();
       $composite->add($leaf1);
       $composite->add($leaf2);
       $composite->operation();
       $composite->remove($leaf2);
       $composite->operation();
   }
}
Client::main();

请关注我的订阅号

订阅号.png

深入理解工厂与复合设计模式 本篇博客深入探讨了工厂模式与复合设计模式的应用与实现。通过代码示例和结构化分析,展示了如何在Web开发中使用工厂模式来处理不同类型的形状对象,以及如何利用复合模式来统一管理表单元素或组织结构。文章还提供了一些实用的编程技巧和设计思想,以帮助读者更好地理解和应用这些设计模式。 阅读详情

相关推荐

学习php设计模式 php实现合成模式(composite)

一、意图 将对象组合成树形结构以表示”部分-整体”的层次结构。Composite使用户对单个对象和组合对象的使用具有一致性。 Composite变化的是一个对象的结构和组成。 二、合成模式中主要角色 抽象组件(Component)角色:抽象角色,给参加组合的对象规定一个接口。在适当的情况下,实现所有类共有接口的缺省行为。声明一个接口用于访问和管理Component的子组件 树叶组件(Leaf)角色:在组合中表示叶节点对象,叶节点没有子节点。在组合中定义图元对象的行为。 树枝组件(Composite)角色:存储子部件。定义有子部件的那些部件的行为。在Component接口中实现与子部件有关的操作

合成模式php,学习php设计模式 php实现合成模式(composite)

一、意图将对象组合成树形结构以表示”部分-整体”的层次结构。Composite使用户对单个对象和组合对象的使用具有一致性。Composite变化的是一个对象的结构和组成。二、合成模式中主要角色抽象组件(Component)角色:抽象角色,给参加组合的对象规定一个接口。在适当的情况下,实现所有类共有接口的缺省行为。声明一个接口用于访问和管理Component的子组件树叶组件(Leaf)角色:在组合中...

weixin_39947521的博客 158

永磁同步电机解耦控制实战:从电流反馈到内模解耦的算法演进与选型指南

本文深入探讨了永磁同步电机高性能驱动中的核心挑战——交叉耦合问题,并对比分析了电流反馈解耦和内模解耦两大主流算法的原理、性能与适用场景。文章指出,电流反馈解耦动态响应快但对参数敏感,内模解耦鲁棒性更强但略有滞后,为工程师在不同应用需求下的算法选型提供了清晰的实战指南。

weixin_29039773的博客 263

PHP设计模式 - 合成模式

组合模式(Composite Pattern)有时候又叫做部分-整体模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性。 常见使用场景:如树形菜单、文件夹菜单、部门组织架构图等。 <?php /** * *安全式合成模式 */ interface Component { public func...

weixin_30502965的博客 136

爬取信用中国里面的行政处罚

result字段名为行政处罚文书号、处罚决定日期、处罚内容、处罚金额、违法事实、处罚机关、公司名称,行政处罚次数。file_path=r'E:\Data analyze\python\行政处罚爬虫/'#路径需要按实际修改。writer = pd.ExcelWriter('统计.xlsx')# 写入Excel文件。src_workbook=file_path+r'行政处罚(名单).xls' #表格名称也要更改。# keyword = input("输入爬取的公司全称必须是全称")

qq_42863025的博客 1674

【中兴交换机MC-LAG配置】

​ 中兴mc-lag配置 主设备配置如下: Keepalive链路 interface smartgroup1023 //用作MC-LAG的Keepalive链路接口 switch attribute disable yes description For_Keepalived exit interface xgei-0/1/1/47 switch attribute disable yes description For_Keepalived exit interface

qq_31440733的博客 1万+

PHP组合模式(Composite Pattern)

组合模式是一种非常常见的结构型模式,它可以让我们将对象组合成树形结构来表示“部分-整体”的层次关系。在实际开发中,我们可以根据具体的需求,选择不同的组合方式来管理复杂的对象结构,从而提高系统的灵活性和可扩展性。

php-yyds 442

基于紫光同创FPGA的adf网表文件使用和黑匣子设置

这个时候就可以选择将你的网表文件给到他使用,就是相当于把你的功能模块封装成了一个黑匣子一样,只有外部端口,没有内部代码;,在TOP层的子模块声明里面需要加上/*synthesis syn_black_box */进行黑匣子设置,此时子层 adf 文件作为黑盒是不会综合的,在 device map 时会将顶层综合结果与子层 adf 文件合并传递至布局布线阶段;这些都设置完毕后呢,就可以对工程进行编译和综合了,综合完毕后会生成一个.adf的网表文件,我们要使用的就是这个文件;我这里是把两个子模块的添加了哈;

H2061722的博客 963

访问者模式 php,学习php设计模式 php实现访问者模式(Visitor)

访问者模式表示一个作用于某对象结构中各元素的操作。它可以在不修改各元素类的前提下定义作用于这些元素的新操作,即动态的增加具体访问者角色。访问者模式利用了双重分派。先将访问者传入元素对象的Accept方法中,然后元素对象再将自己传入访问者,之后访问者执行元素的相应方法。访问者模式多用在聚集类型多样的情况下。在普通的形式下必须判断每个元素是属于什么类型然后进行相应的操作,从而诞生出冗长的条件转移语句。...

weixin_42813171的博客 191

Floyd (弗洛伊德)算法简述

Floyd在1962年由Robert Floyd以其当前公认的形式出版。算法作为三个嵌套for循环的现代公式首先由Peter Ingerman在1962年描述。Floyd 算法是解决图论问题的比较经典的算法,是解决给定的加权图中顶点间的最短路径的一种算法,可以正确处理有向图的最短路径问题。

慕羽★的博客 2万+

第133章 PCL OrientedBoundingBox 有向包围盒

中文叫有向包围盒,是一种旋转过的包围盒。特点:不像AABB那样固定朝向坐标轴能更紧密地包裹物体适用于复杂姿态的物体,比如倾斜、旋转的物体通常通过PCA、惯性矩等算法确定方向。

yumeiguo的博客 263

PHP-设计模式详解(组合模式)

组合模式(Composite) 介绍 结构型模式,把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。 何时使用:提现整体和部分层次结构,忽略组合对象和单个对象的不同,可以统一使用组合结构中的所有对象。 优点: 模块调用简单; 节点自由度增加。 缺点: 在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。 代码实现: <?php abstract class CompanyBase{ protec

firesea的专栏 218

用 ABAP LSMW 的 Standard Batch / Direct Input 稳准快迁移物料主数据:从 MM01 录制到 RMDATIND 直入的落地指南

本文详细介绍了SAP数据迁移中LSMW工具的使用方法,重点分析了物料主数据迁移的两种主要路径:Batch Input Recording和Standard Batch/Direct Input。前者通过录制事务操作实现快速起步,后者通过调用预置接口程序实现稳定高效的批量处理。文章深入解析了Standard Direct Input的具体实施步骤,包括对象属性设置、源结构定义、字段映射规则等关键环节,并特别强调了迁移前的准备工作(如编号策略、视图策略等)对项目成功的重要性。通过对比两种方法的优缺点,为不同业务

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 151

php设计模式遵循的原则

php设计模式遵循的原则 在讨论面向对象编程和模式(具体一点来说,设计模式)的时候,我们需要一些标准来对设计的好还进行判断,或者说应该遵循怎样的原则和指导方针。 现在,我们就来了解下这些原则: 单一职责原则(S) 开闭原则(O) 里氏替换原则(L) 接口隔离原则(I) 依赖倒置原则(D) 合成复用原则 及迪米特法则(最少知道原则) 本文将涵盖 SOLID + 合成复用原则的讲解及示例,迪米特法则以扩展阅读形式给出。 单一职责原则(Single Responsibility Princ

seabirds 295

【ROS2】手眼标定:moveit2_handeye_calib使用详解

moveit2_handeye_calib MoveIt2 官方的 手眼标定功能包,包含标定插件、图形化界面和示例程序。提供基于 ArUco/ChArUco 标定板的采集与求解功能。标定板下载aruco在线生成器。

郭老二 246

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

彻底搞懂设计模式DesignPattern-23种设计模式整理

设计模式介绍 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案, 设计模式(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂 度。 <<设计模式>> 是经典的书,作者是 Erich Gamma、 Richard Helm、 Ralph Johnson 和 John Vlissides

Ping 1105

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

php设计模式

php设计模式

chen199529的博客 394

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

php同余式,学习php设计模式 php实现合成模式(composite)

一、意图将对象组合成树形结构以表示”部分-整体”的层次结构。Composite使用户对单个对象和组合对象的使用具有一致性。Composite变化的是一个对象的结构和组成。二、合成模式中主要角色抽象组件(Component)角色:抽象角色,给参加组合的对象规定一个接口。在适当的情况下,实现所有类共有接口的缺省行为。声明一个接口用于访问和管理Component的子组件树叶组件(Leaf)角色:在组合中...

weixin_39559559的博客 99

PHP设计模式

在平时写代码过程中,构建对象最常用的方式是 new 一个对象。每 new 一个对象,相当于调用者就知道了一个类,增加了类与类之间的联系,不利于程序的松耦合。更好的实现方式是有一个水果工厂,我们告诉工厂需要什么种类的水果,水果工厂将我们需要的水果制造出来给我们就可以了。工厂方法模式是简单工厂的升级版,在原有的基础上对工厂进行一个抽象的升级,我们不再提供一个统一的工厂类来创建所有的对象,而是针对不同的对象提供不同的工厂。当我们需要一个苹果时,我们需要知道苹果的构造方法,需要一个梨子时,需要知道梨子的构造方法。

Super乐De博客 2178

php 设计模式好处,浅析php设计模式(上)

由于本人才疏学浅,对问题认知难免有偏差,本着学习与共享的精神和大家一起探讨,若有不对之处,望大家多多批评指正。一、什么是设计模式?设计模式就是一个教你如何利用真实可靠的设计来组织你的代码的模板,是解决特定问题的有效方法。通俗点说就是设计方法。在软件设计中,不可避免地要碰到一些设计上的问题,这些问题前人已经遇到过,并且总结出一些解决相关问题的方法,称这一系列方法为“模式”。二、设计模式的原则1.开-...

weixin_33877700的博客 243

php 论坛_PHP设计模式之组合模式

PHP设计模式之组合模式互联网公司流行扁平化管理,也就是管理层级尽量少于或者不超过三层,作为一个底层的码农,你的CEO和你的职级也就相差3层以内。但是很多传统企业,则会有非常深的层级关系,从数据结构看,这种按职能进行分组的组织架构非常像一颗树。而我们今天介绍的组合模式的作用就和这个企业组织架构层级的模式非常类似。Gof类图及解释GoF定义:将对象组合成树形结构以表示“部分-整体”的层次结构。Com...

weixin_39996134的博客 195

PHP 中最全的设计模式(23种)

PhpDesignPatterns 【PHP 中的设计模式】一、 Introduction【介绍】 设计模式:提供了一种广泛的可重用的方式来解决我们日常编程中常常遇见的问题。设计模式并不一定就是一个类库或者第三方框架,它们更多的表现为一种思想并且广泛地应用在系统中。它们也表现为一种模式或者模板,可以在多个不同的场景下用于解决问题。设计模式可以用于加速开发,并且将很多大的想法或者设计以一种简单地方

ITYangs的博客 7436

php设计模式好处,PHP设计模式之命令模式的深入解析

命令模式(Command),命令模式是封装一个通用操作的机制。如果你熟悉C或PHP,你可能已经遇到过Command,它相当于程序中的:回调(callback)。回调通常使用一个函数指针或数据结构如PHP中的字符串和数组实现,Command是在一个方法调用之上的抽象,它吸收了所有面向对象的好处:合成、继承和处理。例如,《设计模式》一书推荐使用Command存储用户行为链,以支持撤销和重做操作。注意P...

weixin_34558565的博客 110

PHP版设计模式

设计模式:提供了一种广泛的可重用的方式来解决我们日常编程中常常遇见的问题。设计模式并不一定就是一个类库或者第三方框架,它们更多的表现为一种思想并且广泛地应用在系统中。它们也表现为一种模式或者模板,可以在多个不同的场景下用于解决问题。设计模式可以用于加速开发,并且将很多大的想法或者设计以一种简单地方式实现。当然,虽然设计模式在开发中很有作用,但是千万要避免在不适当的场景误用它们。php/*** AbstractFactory class[抽象工厂模式]*/

Fandwer的专栏 173

PHP设计模式之组合模式

PHP设计模式之组合模式 互联网公司流行扁平化管理,也就是管理层级尽量少于或者不超过三层,作为一个底层的码农,你的CEO和你的职级也就相差3层以内。但是很多传统企业,则会有非常深的层级关系,从数据结构看,这种按职能进行分组的组织架构非常像一颗树。而我们今天介绍的组合模式的作用就和这个企业组织架构层级的模式非常类似。 Gof类图及解释 GoF定义:将对象组合成树形结构以表示“部分-整体”的层次...

bujidexinq的专栏 228
上一篇: php与设计模式-享元模式
下一篇: php与设计模式-代理模式
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值