设计模式
小兔and小乖
把代码看作自己的孩子不容许他犯一丝错误
展开
-
每日一记之观察者模式
定义: 在一对多依赖的对象关系中, 如果这个'一'对象状态发生了变化,那么它所有依赖的'多'对象都应该被通知,然后做相应的变化在观察者模式中最重要的俩个对象分别是:Observable(被观察者)和Observer(观察者)对象.它们的关系可总结如下:1. 被观察者和观察者对象是一对多的关系,也就是说一旦被观察者对象状态变化,它就要负责通知所有和它有关系的观察者对象,然后做相应原创 2013-10-24 22:10:55 · 1036 阅读 · 0 评论 -
每日一记之php单例模式实现
单例模式,顾名思义就是只需要只有一个实例化对象, 在软件的设计中,单例模式是非常常用的。实例化一次,节省了大量的资源,而且单例模式在一定程度上可以替换类中引入全局变量而导致的bug。因为全局变量将类捆绑于特定的环境中。破坏了封装,这样的类很难被其他的应用程序所通用。使用单例模式则能够将类更好的组织,并且复用。下面一起来看看php中单例模式的实现。加入现在我的系统中需要使用redis数据库,在程原创 2013-10-19 21:27:22 · 960 阅读 · 0 评论 -
设计模式
前几天写了几个简单的设计模式的实现, 其实在讲解各个设计模式之前我忽略了很重要的一部分,就是什么是设计模式?使用设计模式有什么好处?设计模式应该遵循哪些原则。今天我把这些补充上,为自己巩固巩固,也为那些希望能够写出更加优雅代码的人指引一点方向。什么是设计模式?总设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是原创 2013-10-25 23:54:49 · 1017 阅读 · 0 评论 -
php设计模式之工厂模式
一提到工厂,大家可能脑海里就是机器轰鸣轰鸣的声音,然后一件件的产品就生产出来了。那么软件设计中的工厂模式又是什么?跟现实中一样,只是工厂方法用来生成的对象,而不是产品。为什么会出现工厂模式呢,在面向对象的设计中强调“抽象高于实现”,也就是说我们要尽量的一般化而不是特殊化,工厂方法模式解决了当代码关注于抽象类型时如何创建对象的实例问题。假设某一衣服厂商能够生产出不同的衣服,比原创 2013-10-20 22:18:16 · 984 阅读 · 0 评论 -
每日一记之php原型模式
原型模式是指通过现有的实例通过拷贝得到新的实例。在程序的设计中,有的时候我们去实例化某个对象需要做太多的初始化工作,非常耗时的时候,我们可以考虑采用原型模式来得到新的实例。其实在php中我们很容易通过clone关键字去实现对象的复制。另外通过魔术方法__clone()指定在clone的时候需要进行的操作。这个其实就是原型模式的实现方式了。当然,有时候为了让代码看起来比较优雅,比较完善。我们原创 2013-10-21 21:52:30 · 1041 阅读 · 0 评论 -
每日一记之适配器模式
适配器模式, 也叫做Adapter模式,他的完整定义是: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。在生活中也有一些适配器的实例,比如说我们的插座,一般我们的插座是两孔的,但是有些大功率的电器比如空调啊,冰箱之类的,他们就是三孔的。而为了使两孔三孔都能够正常的使用,所以我们的插座一般都有三孔的实现。但是电线我们原创 2013-10-22 21:20:56 · 1106 阅读 · 0 评论 -
每日一记之策略模式
定义:策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。其实策略模式是一个非常重要的模式,它把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口,然后在定义一个上下文类中包含实现这个接口的类对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。利用策略模式构建应用程序,可以根据用户配置等内容,选择原创 2013-10-23 21:18:56 · 1111 阅读 · 0 评论 -
每日一记之模版模式
前段时间实在是太忙,本来是准备每天都写一篇博客的。结果也没有坚持下来。今天就接着说说模版模式。定义:定义一个操作中算法的骨架,而将这些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤.可能光看定义确实不容易理解,其实挺简单。就是需要定义一个父类,父类必须定义为抽象类,封装了一些通用的实现逻辑,另外父类需要提供一些抽象的方法。而这些抽象方法则在子类中原创 2013-11-17 22:40:42 · 855 阅读 · 0 评论