设计模式
文章平均质量分 80
php的绯闻女友
日日无事 事复日日 忙忙亦茫茫
展开
-
php 简单工厂模式
1.模式定义 在简单工厂模式中,可用根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。2.模式结构图简单工厂模式包含如下角色:1.Factory(工厂角色) 工厂角色即工厂类,它是简单工厂模式的核心,负责实现创建所有实例的内部逻辑;工厂类可用直接被外界调用,创建所需要的产品对象;在工厂类中提供了静态的工厂方法factoryMethod(),它返回一个抽象产品类Product,所有的具体产品都是抽象产...原创 2021-06-26 16:50:59 · 409 阅读 · 0 评论 -
设计模式概述
1.定义 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、提高代码的可靠性。2.基本要素 设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中模式名称、问题、解决方案和效果是关键要素。3.分类(1)根据其目的可分为创建型、结构型、行为型三种: ①创建型模式主要用于创建对象,GoF提供了5种创建型模式,分别是工厂方法模式、...原创 2021-06-26 14:26:38 · 251 阅读 · 0 评论 -
设计模式七大原则
设计原则名称 定义 单一职责原则 一个对象应该只包含单一的职责,并且该职责被完整的地封装在一个类中。 开闭原则 一个软件实体应当对扩展开放,对修改关闭 里氏替换原则 所有引用基类(父类)的地方必须能透明地使用其子类的对象 依赖倒转原则 高层模块不应该依赖底层模块,它们都应该依赖于抽象。抽象不应该依赖于细节,细节...原创 2021-06-26 14:01:15 · 103 阅读 · 0 评论 -
php 观察者模式
在某多人联机对战游戏中,多个玩家可以加入同一战队组成联盟,当战队中的某一成员受到敌人攻击时将给所有其他盟友发送通知,盟友收到通知后将做出响应。现使用观察者模式设计并实现该过程,以实现战队成员之间的联动。类图:<?php // 抽象观察者类interface Observer{ public function getName(); public function setName($name); public function help();//声明支援盟原创 2021-06-24 23:53:49 · 657 阅读 · 1 评论 -
php 命令模式
为了用户使用方便,某系统提供了一系列功能键,用户可以自定义功能键的功能,例如功能键FunctionButton可以用于退出系统(由SystemExitClass类来实现),也可以用于显示帮助文档(由DisplayHelpClass类来实现)。用户可以通过修改配置文件来改变功能键的用途,现使用命令模式来设计改系统,使得功能键类与功能类之间解耦,可为同一个功能键设置不同的功能。新建解决方案,新建一个控制台应用程序,编写责任模式实现代码,实现以上需求的案例,要求编写为控制台应用程序,并能调试运行。类.原创 2021-06-14 12:32:23 · 857 阅读 · 3 评论 -
php 装饰模式
某软件公司基于面向对象技术开发了一套图形界面构件库——VisualComponent,该构件库提供了大量基本构件,如窗体、文本框、列表框等,由于在使用该构件库时,用户经常要求定制一些特殊的显示效果,如带滚动条的窗体、带黑色边框的文本框、既带滚动条又带黑色边框的列表框等等,因此经常需要对该构件库进行扩展以增强其功能。请使用装饰模式来设计该图形界面构件库。类图:...原创 2021-06-01 10:36:48 · 641 阅读 · 0 评论 -
php 代理模式
某软件公司承接了某信息咨询公司的收费商务信息查询系统的开发任务,该系统的基本需求如下:(1) 在进行商务信息查询之前用户需要通过身份验证,只有合法用户才能够使用该查询系统;(2) 在进行商务信息查询时系统需要记录查询日志,以便根据查询次数收取查询费用。该软件公司开发人员已完成了商务信息查询模块的开发任务,现希望能够以一种松耦合的方式向原有系统增加身份验证和日志记录功能,客户端代码可以无区别地对待原始的商务信息查询模块和增加新功能之后的商务信息查询模块,而且可能在将来还要在该信息查询模块中增加一些原创 2021-06-01 10:29:40 · 486 阅读 · 1 评论 -
php 桥接模式
某软件公司要开发一个跨平台图像浏览系统,要求该系统能够显示BMP、JPG、GIF、PNG等多种格式的文件,并且能够在Windows、Linux、UNIX等多个操作系统上运行。系统首先将各种格式的文件解析为像素矩阵(Matrix),然后将像素矩阵显示在屏幕上,在不同的操作系统中可以调用不同的绘制函数来绘制像素矩阵(变化最大,可考虑成业务实现部分)。另外,系统需具有较好的扩展性,以便在将来支持新的文件格式和操作系统。试使用桥接模式设计该跨平台图像浏览系统。UML类图:<?php/** *原创 2021-05-16 16:41:24 · 891 阅读 · 0 评论 -
php 适配器模式
题目:在为某学校开发教务管理系统时,开发人员发现需要对学生成绩进行排序和查找,该系统的设计人员已经开发了一个成绩操作接口ScoreOperation,在该接口中声明了排序方法Sort(int[]) 和查找方法Search(int[], int),为了提高排序和查找的效率,开发人员决定重用现有算法库中的快速排序算法类QuickSortClass和二分查找算法类BinarySearchClass,其中QuickSortClass的QuickSort(int[])方法实现了快速排序,BinarySearchCla原创 2021-05-11 20:11:49 · 724 阅读 · 0 评论 -
php 单例模式
题目:某软件公司承接了一个服务器负载均衡(Load Balance)软件的开发工作,该软件运行在一台负载均衡服务器上,可以将并发访问和数据流量分发到服务器集群中的多台设备上进行并发处理,提高了系统的整体处理能力,缩短了响应时间。由于集群中的服务器需要动态删减,且客户端请求需要统一分发,因此需要确保负载均衡器的唯一性,只能有一个负载均衡器来负责服务器的管理和请求的分发,否则将会带来服务器状态的不一致以及请求分配冲突等问题。如何确保负载均衡器的唯一性是该软件成功的关键,请使用单例模式设计服务器负载均衡器。原创 2021-04-22 11:26:23 · 1009 阅读 · 0 评论 -
php 原型模式
要求: 在使用某OA系统时,有些岗位的员工发现他们每周的工作都大同小异,因此在填写工作周报时很多内容都是重复的,为了提高工作周报的创建效率,大家迫切地希望有一种机制能够快速创建相同或者相似的周报,包括创建周报的附件。请使用原型模式对该OA系统中的工作周报创建模块进行改进。类图(感觉不太会画。。):附件类 Attachment.php:<?phpclass Attachment{ private $_name; function __set($name,...原创 2021-04-16 16:35:58 · 595 阅读 · 0 评论 -
php 工厂模式
首先是抽象工厂:LogFactory.php<?phpinterface LogFactory{ public function createLog();}抽象产品:Logger.php<?phpinterface Logger{ public function writeLog();}具体产品:数据库日志记录器 DatabaseLog.php<?phprequire_once "Logger.php";class Database原创 2021-04-05 14:55:49 · 523 阅读 · 0 评论