2016-10-13 曹强
php
简介 在[PHP设计模式(八):工厂模式][2]中我们介绍了创建设计模式(Creation patterns)中的工厂模式,下面我们将介绍另一种原型设计模式(Prototype Method)。 在PHP中,原型设计模式依靠cloning复制对象来实现。通过cloning构造的对象,将大量节省新对象的构造时间。 何时使用原型设计模式? 简单来说,当你希望根据已有的对象来创建新对象时。 为什么会有这种需求?想象一下,你在做细胞分裂的项目,每一个细胞都是一个对象,现在你有一个细胞类,每一个新的细胞都是由这个类生成的,不同的细胞只是内部的状态参数不同。 当分裂到第N代的时候,已经和初代大不一样了,你是愿意使用第N代的副本 继续阅读 »
2015-04-16 derekchan
《大话设计模式》里面,有这样一则小故事:小菜帮修过电脑的女同学(娇娇)找他吃饭,他借机问娇娇有没男朋友,娇娇却很残忍的告诉他已经有男朋友(戴励),小菜很好奇地想知道娇娇跟戴励的恋爱故事,之后两人就陷入了“回忆”当中。 “娇娇同学,这是有人送你的礼物。”一个男生手拿着一个芭比娃娃送到她的面前。 继续阅读 »
2016-10-13 曹强
php
原文地址:[PHP设计模式(六):MVC][1] Introduction 20世纪80年代,计算机发展迅速,编程技术也日益分化。桌面应用编程,也逐渐出现了用户图形界面和程序逻辑分离的程序设计。到了90年代,web的出现更是让这种程序设计模式得以延续。 这种设计模式便是MVC(Model-View-Control),除了MVC,还有MVC的变种,如MVVM(Model-View-View-Model)等。 MVC 回到80年代的桌面应用编程,当时面向对象的编程设计模式(见PHP设计模式(一):基础编程模式)兴起,程序员将桌面应用分割成两个大的对象:领域对象(domain objects)和可视对象(presentatio 继续阅读 »
2015-03-16 derekchan
今天我来谈谈设计模式中常用的一个模式:工厂模式; 工厂模式的应用场景通常是需要根据不同参数来判断运行方法,为了避免逻辑处理代码的复杂度。我们可利用工厂模式,来减低逻辑处理的耦合度,提高代码可扩展性。 举个例子 商场里面的现金结算系统,有打8折和满500返50的功能,如果用一般的代码设计的话,就会是这样的: 继续阅读 »
2015-07-30 derekchan
之前在学设计模式的时候,总会去查找相关的博客文章,但发现很多博主只写了几个模式就没写下去了,当初很是不明白,为什么不写完呢,现在自己来记录这些的时候,才体会到,常用的设计模式就那么几个,例如工厂模式、策略模式、单例模式,而且现在互联网资源那么多,完全没必要自己再去码字纪录,再后来也就造成了大家都是写那么几个就不写的情况。 继续阅读 »
2016-10-13 曹强
php
简介 在[PHP设计模式(二):抽象类和接口][2]以及[PHP设计模式(三):封装][3]中,我们已经见过继承,也就是extends关键字。 和C/C++,Java,Python等语言一样,PHP也支持继承,而且和其他语言没有什么区别。 继承/Inheritance 还是用动物、鲸鱼和鲤鱼来举例: abstract class Animal { protected $name; protected function chew($food) { echo $this-name . " is chewing " . $food . ".\n"; } protected function diges 继续阅读 »
2016-10-13 曹强
php
Introduction 在[PHP设计模式(四):继承][2]中我们介绍了继承,利用extends来进行程序设计的方法。 在[PHP设计模式(二):抽象类和接口][3]中我们介绍了接口,事实上也存在利用interface的程序设计方法,那就是多态。 和C/C++,Java,Python等语言一样,PHP也支持多态。多态更多是是一种面向对象程序设计的概念,让同一类对象执行同一个接口,但却实现不同的逻辑功能 。 多态/Polymorphism 还是用动物、鲸鱼和鲤鱼来举例: interface IEat { function eatFish(); function eatMoss(); } class Wha 继续阅读 »
2015-09-21 derekchan
每个第三季度都是最忙的,工程师活动,部门事务,终于得以闲下来打理自己的网站了,之后会恢复发布文章的频率(每周至少一篇),有什么聊什么,也沉淀下自己的文笔。 PS:博客没怎么去推广,就当作自己跟自己的谈话吧。 今天来浅谈下设计模式中的单例模式。单例模式是最常用到的设计模式之一,有时候在单线程中需要多次调用到同一个类对象,每实例化一次,内存君就多创建一个内存地址,这样就造成了资源浪费,严重的冗余。利用单例模式则可以有效的减少这种资源浪费。 继续阅读 »
2015-03-18 derekchan
前面讲到了工厂模式,今天来讲讲策略模式,工厂模式只是单纯的封装了行为。使用策略模式能把算法对象分别封装起来,让它们之间可以互相替换,减少了各种算法类与使用算法类之间的耦合。 我们来看看策略模式是怎么工作的: [][1] 继续阅读 »
2015-04-11 derekchan
在开发项目的时候,常常会利用继承来实现子父类的功能传递。比如,我们开发一个餐厅点餐系统,点餐系统现在有饭类,面类这两种主食可以选择,搭配主食的有饮料,小食。 起初的架构是这样的: [][1] 继续阅读 »