观察者模式也是比較简单的一种模式,可能从名字上理解无法明确,但真正理解其含义之后就非常easy了,说实话在自己来发的项目中自己也用到过.仅仅只是不知道它叫观察者罢了,仅仅要懂面向对象的对继承多态理解非常深的,玩观察者模式非常任意就能用到项目中去. 这本书用一个非常形象的故事解释了观察者模式,故事情景:公司员工当老板不在时有的炒股有的看NBA,为了防止老板偷袭,让前台MM通知.即前台MM充当了观察者,而员工属于详细的实例对象了.我们要编写的代码就是MM作为通知类,员工作为被通知者, 观察者模式:定…
对于状态模式,<<大话设计模式>>是以人从上班到下班到加班的状态来展开讲述的.状态模式事实上就是某一个对象在某个过程或者时间的一个状态记录,可是这个状态的顺序不能发生变化.在程序设计方面可能要比其它模式略微复杂点,请待我慢慢将来. 本人喜欢用代码来形象的讲述原理,可能是由于对单纯的看些理论的书有些反感或者无趣吧.我希望以后的教育也如此,要不大家都不高考了. . .嘿嘿说多了 状态模式:当一个对象的内在状态改变时同意改变其行为.这个对象看起来像是改变了其类. 还是代码呈现吧.概念太抽…
又和大家见面了.可以坚持写出第二篇文章真不错,好好加油. <<大话设计模式>>解说策略模式是以商场收银软件程序开头的,那么问题来了.哪家商场收银软件强,开玩笑了. 读过上篇文章<<简单工厂模式>>的知道,它有两个缺点:1.client依赖两个类.耦合性高:2.假设算法过多则须要写非常多类.解决上面问题的就是策略模式了. 策略模式:它定义了算法家族.分别封装起来.让它们之间能够互相替换,此模式让算法的变化,不会影响到使用算法的客户. 商场收银软件:单位价格*打…
学习设计模式有一段时间了,对设计模式有一个体会,就是没那么难.就是设计程序遵循一些原则,让代码可复用,在改动的时候不用涉及太多的类,扩展方便.抽象工厂模式名字听起来抽象.但理解起来一点也不抽象,用语言可能不好理解.我喜欢通过代码理解.然后成为自己的东西. 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们详细的类. <<大话设计模式>>以项目上线时想换另外一个数据库为样例展开的,假如我没原来用的是SqlServer,如今换成access,代码例如以下: 1.訪…
代理模式我想大家即便不熟悉也都听过吧,从字面意思上看就是替别人干活的,比方代理商.在项目的实际应用中也有非常多地方用到.比方spring通过代理模式生成对象等. 代理模式的书面定义:为其它对象提供一种代理以控制对这个对象的訪问. 在某些情况下,一个对象不适合或者不能直接引用还有一个对象,而代理对象能够在client和目标对象之间起到中介的作用. 在<<大话设计模式>>一书中以一个有男朋友的女孩让"小菜"帮忙修电脑的故事展开的,事实上说白了代理就是帮别人干活的,一…
工厂模式尽管简单.可是写下这篇文章却不简单. 第一:本人经过内心的挣扎后才决定開始写博文的.为什么呢,由于好长时间没有写了,对自己的文学功底也是好不自信.可是技术这东西你不写出来你真不知道自己掌握多少.或者是否掌握其本质:第二:老婆怀孕了,没时间写了.可是我还是挤出时间開始写.于是这篇文章在这种环境下成了.以后还有兴许的文章.谢谢关注! 为什么从设计模式開始学习呢?事实上曾经对设计模式有些了解,可是用不到也就没有深入,如今差点儿相同也忘完了,本人工作三年了.对一些大众上的技术(比方struts2…
怎么又是工厂模式呢?上次不是讲过简单工厂模式吗?不错.此工厂模式非彼工厂模式. 工厂模式:定义一个用于创建对象的接口.让子类决定实例化那一个类,工厂方法是一个类的实例化延迟到其子类. 还是以代码来进行比較吧 1.操作接口.与简单工厂模式一样 publicabstractclass Operation { publicdoublenumberA; publicdoublenumberB; publicabstractdouble getResult(); } .相加.相减类与简单工厂模式一样 pu…
定义观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己. <?php /*主题类或称为通知类*/ class Subject { private $_observers = array(); /*注册观察者*/ public function register($obs) { $this->_observers[] = $obs; } /*触发器,更新通知*/ public function…
读了<大话设计模式>,摘录该书中讲到的设计模式几大原则,供日后使用. 一.单一职责原则 就一个类而言,应该仅有一个引起它变化的原因.如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到破坏.软件真正要做的许多内容,就是发现职责并把那些职责相互分离.如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离. 二.开放-封闭原则 软件实体(…
还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 问个问题: 如何写出高质量的代码?灵活,可扩展,易读,易维护,可重构,可复用......??? 如果要解答上述问题,就有必要学习设计模式. 本人将从大话设计模式一书中进行取例,也会利用大话设计模式一书中的简短对话进行情景构造! 本篇博客属于系列博客,我个人书写的同时,也希望自己坚持下来,争取把常用的二十多个设计模式写完吧! 同时,希望大家与我互动,多留言,多评价,有不足之处希…