PHP设计模式
文章平均质量分 59
拼搏的小船长
读书 行路 思考
展开
-
面向对象设计的基本原则
1.单一职责:一个类,只需要做好一件事情2.开放封闭:一个类,应该是可以扩展的,而不可修改的3.依赖倒置:一个类,不应该强依赖另一个类,每个类对于另外一个类都是可以替换的4.配置化:尽可能的使用配置,而不是硬编码5.面向接口编程:只需要关心接口,不需要关心实现原创 2015-07-05 09:13:33 · 241 阅读 · 0 评论 -
创建型模式:抽象工厂模式(Abstract Factory)--分析优缺点
转载地址:http://blog.csdn.net/lingyun_blog/article/details/41479563追MM少不了请吃饭了,麦当劳的套餐和肯德基的套餐都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“两个B套餐”就行了。麦当劳和肯德基就是B套餐的Abstract Factory, B套餐里含有汉堡, 鸡翅和饮料. 麦当劳或转载 2015-11-15 10:29:29 · 426 阅读 · 0 评论 -
抽象工厂模式实例与讲解
<?php/** * Created by PhpStorm. * User: captain * Date: 15/11/15 * Time: 下午4:11 */abstract class ApptEncoder{ abstract function encode();}class BloggsApptEncoder extends ApptEncoder{原创 2015-11-15 16:49:40 · 959 阅读 · 0 评论 -
原型模式---抽象工厂模式的变形(兄弟)
class sea{};class EarthSea extends sea{};class MarsSea extends sea{};class Plains{};class EarthPlains extends Plains{};class MarsPlains extends Plains{};class Forest{};class EarthForest exten原创 2015-11-15 21:25:34 · 337 阅读 · 0 评论 -
外观设计模式
外观模式是一种十分简单的概念,它只是为一个分层或者子系统创建一个单一的入口。这会带来许多好处。首先,有助于分离项目中的不同部分,其次,对于客户端的开发者来说,访问代码变得简洁。另外,由于在一个地方调用子系统,减少了出错的可能性。<?php/** * 代码示例: 获取CD对象,对其所有属性应用大写形式,并且创建一个要提交给Web服务的,格式完整的XML文档。 */class原创 2015-11-22 23:05:54 · 306 阅读 · 0 评论 -
装饰者模式
转载地址:http://blog.csdn.net/wzllai/article/details/7835904扩展一个类一般可以使用继承或者组合的形式。使用继承的方式扩展时,随着基类子类的增多,以及子类的子类出现,继而出现了代码的无限制膨胀,增加了系统的复杂性。而使用装饰者模式既继承又引用,能动态扩展类的一些功能,减少了继承数量。装饰纸UML类图:php代码实例(出自ph转载 2015-11-18 22:35:23 · 251 阅读 · 0 评论 -
单例模式--实例讲解
class Preferences { private $props = array(); private static $instance;private function __construct(){}public static function getInstance(){ if(empty(self::$instance)){ self:原创 2015-11-14 13:02:26 · 285 阅读 · 0 评论 -
组合模式
转载地址:http://blog.csdn.net/phenixsoul/article/details/8480980这个模式理解起来会有些歧义,特别是某些书上面那些难懂的阐述。先来说说组合模式的几个特点:1、必须存在不可分割基本元素。2、组合后的物体可以被组合。举个通俗的例子,原子是化学反应的基本微粒,它在化学反应中不可分割。现在有 C(碳)、H(氢)、O(转载 2015-11-17 23:23:53 · 233 阅读 · 0 评论 -
观察者模式实例与UML
<?php//观察者模式class User implements SplSubject{ public $lognum; public $hobby; protected $observers = []; public function __construct($hobby){ $this->lognum = rand(1,10);原创 2015-11-23 22:32:48 · 1801 阅读 · 0 评论 -
责任链模式实例
<?phpclass Board{ protected $power = 1; protected $top = 'Admin'; public function process($lev){ if($lev$this->power){ echo '删除帖子'; }else{ $top =原创 2015-11-29 22:56:01 · 461 阅读 · 0 评论 -
策略模式实例与UML
<?phpinterface FlyBehavior{ public function fly();}class FlyWithWings implements FlyBehavior{ public function fly(){ echo "Fly With Wings ".PHP_EOL; }}class FlyWithNo implem原创 2015-11-29 21:44:41 · 981 阅读 · 0 评论 -
装饰模式实例与UML
<?phpabstract class Tile{ abstract function getWealthFactor();}class Plains extends Tile{ private $wealthfactor=2; function getWealthFactor(){ return $this->wealthfactor; }原创 2015-12-02 00:03:09 · 1077 阅读 · 0 评论 -
单例模式与抽象工厂模式结合实例
abstract class ApptEncoder{ abstract function encode();}class BloggsApptEncoder extends ApptEncoder{ function encode(){ return 'this is bloggs object'; }}class MegaApptEncode原创 2015-11-15 22:24:39 · 2182 阅读 · 0 评论 -
简单工厂模式实例与讲解
abstract class ApptEncoder{ abstract function encode();}class BloggsApptEncoder extends ApptEncoder{ function encode(){ return 'this is bloggs object'; }}class MegaApptEncode原创 2015-11-14 17:35:29 · 301 阅读 · 0 评论 -
PHP设计模式之工厂方法模式(Factory Method)
文章转载地址:http://blog.samoay.me/post/view/27简单工厂(静态工厂方法)说到真正的“工厂方法模式”之前,需要先看一下“简单工厂”,简单工厂实际上还算不上一种模式,我们可以把它叫做一种常用写法。例如我们比较常用的数据库操作,我们为了适配不同的数据库引擎,可能分别编写了具体的数据库操作类(当然这些类都实现了统一的接口)://统一的操转载 2015-07-26 20:04:16 · 556 阅读 · 0 评论 -
单例模式连接数据库实例
class sigle{protected static $ins=null;public static function getIns(){if(self::$ins == null){self::$ins = new self();}return self::$ins;}//方法前加final,则方法不能被覆盖,类前加final,则类不能被继承f原创 2015-07-26 22:28:16 · 531 阅读 · 0 评论 -
PHP设计模式之单例模式(Singleton)
文章转载出处:http://blog.samoay.me/post/view/13单例模式又称为单件模式,顾名思义,就是保持一个对象始终只存在一个实例(PHP本身不支持多线程,因此对于PHP来说不存在多线程的安全问题,参考Java单例模式的实现),并且为该唯一单例提供一个全局访问点(一般是一个静态的getInstance方法)。单例模式应用场景非常广泛,例如:数据库操作转载 2015-07-26 22:25:32 · 329 阅读 · 0 评论 -
工厂方法模式
//共同接口interface db{ function conn();}interface Factory{ function createDB();}//服务端开发,(不知道将会被谁调用)class dbmysql implements db{ public function conn(){ e原创 2015-07-26 19:43:23 · 233 阅读 · 0 评论 -
抽象基类定义接口
将实例化对象独立出来abstract class ParamHandler { protected $source = ''; protected $params = array(); function __construct($source){ $this->source = $source; } function addPara原创 2015-11-14 11:24:40 · 292 阅读 · 0 评论 -
抽象类传递对象
abstract class Employee{ protected $name; function __construct($name){ $this->name = $name; } abstract function fire();}class Minion extends Employee{ function fire(){原创 2015-11-14 11:59:12 · 414 阅读 · 0 评论 -
创建型模式:单例模式(SINGLETON)
转载地址:http://blog.csdn.net/lingyun_blog/article/details/41518145俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Singleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事)定义 有单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供转载 2015-11-14 12:27:37 · 228 阅读 · 0 评论 -
创建型模式:工厂方法模式(Factory Method)--分析优缺点
转载地址:http://blog.csdn.net/lingyun_blog/article/details/41450085请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。定义 核心工厂类不再负责所转载 2015-11-14 18:05:26 · 2619 阅读 · 0 评论 -
工厂方法模式实例与讲解
abstract class ApptEncoder{ abstract function encode();}class BloggsApptEncoder extends ApptEncoder{ function encode(){ return 'this is bloggs object'; }}class MegaApptEncode原创 2015-11-14 18:17:11 · 319 阅读 · 0 评论 -
创建型设计模式:简单工厂模式--分析优缺点
转载地址:http://blog.csdn.net/lingyun_blog/article/details/41444217请MM去麦当劳,各个美女都有各自的爱好,到麦当劳后她们喜欢吃什么直接去点就行了,麦当劳就是生产各种食物的工厂,这时候GG不用自己动手,也可以请这么多美女吃饭,所要做的就是买单。定义 简单工厂属于创建型模式,又叫做静态工厂方法(Sta转载 2015-11-14 17:09:05 · 1062 阅读 · 0 评论 -
设计模式—命令模式
命令模式设计模式里面,命令模式也是遵循SRP(Single Responsibility Principle)原则。命令模式分离了“命令的请求者”与“命令的实现者”。例如我们生活中最典型的餐馆中的“顾客”,“服务员”,“厨师”三种角色:顾客只负责点菜,传递给服务员服务员通知厨师炒菜厨师炒菜上面的例子,就是典型的命令模式。代码如下:<?php/*** 厨师类,命令的接受者与执行者* Cla原创 2016-01-26 21:56:46 · 371 阅读 · 0 评论