随笔分类 - 设计模式
1
摘要:一、改善代码的三部曲 《设计模式》-> 《重构》-> 《重构与模式》。也就是设计->重构->重构出新设计。 《设计模式》主要详细说明20几种模式,为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。为设计而著。 《重构》改善既有代码的设计,总结了我们会用到的各种重构手法,为我...
阅读全文
摘要:类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将...
阅读全文
摘要:每个程序员都该知道的10大编程格言(Kevin Pang):编程格言1:无风不起浪(There is no smoke without fire)编程格言2:预防为主,治疗为辅(An ounce of prevention is worth a pound of cure:)编程格言3:不要把鸡蛋都...
阅读全文
摘要:我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。 应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系...
阅读全文
摘要:前面提到的设计模式大大提高了代码的可读性与可维护性。然而,在WEB应用设计与开发中一个基本的需求与挑战:数据库应用,这些设计模式都没有涉及到。数据映射模式使您能更好的组织你的应用程序与数据库进行交互。下面我将用实际代码说明,如果一个表发生变动。我们要修改客户端代码就可以了。特别是游戏项目,需求经常可...
阅读全文
摘要:设计模式一到二十都是Gof《设计模式》内容的总结,并使用php说明实现,Gof《设计模式》提到的代码都是c++。举例也不是特别典型。这些内容很早之前都已经总结了,现在重新把word笔记整理,算是温故而知新吧。一些地方描述可能有误,在往后的更多实践经验来进一步的修改。 目前我在开发项目的框架...
阅读全文
摘要:特此说明:对访问者模式理解不是特别透彻,若有误,请指正,谢谢!1.概述在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象,可以接受一类称为访问者的对象来访问,而且不同的访问者其访问方式有所不同。例子1:顾客在超市中将选择的商品...
阅读全文
摘要:设计模式 ( 十九 ) 模板方法模式Template method(类行为型)1.概述在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。例子1:银行业务办理流程在银行办...
阅读全文
摘要:设计模式 ( 十八 ) 策略模式Strategy(对象行为型)1.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多...
阅读全文
摘要:设计模式 ( 十七) 状态模式State(对象行为型)1.概述在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的...
阅读全文
摘要:设计模式 ( 十五 ) 观察者模式Observer(对象行为型)1.概述一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力。当对象们连接在一起时,它们就可以相互提供服务和信息。通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信。但是出于各种原因,你也许并不愿意因为代码环境...
阅读全文
摘要:设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)1.概述在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各个对象中。对于一个模块或者系统,可能由很多对象构成,而且这些对象之间可能存在相互的引用,在最坏的情况下,...
阅读全文
摘要:1.概述类中的面向对象编程封装应用逻辑。类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态。单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合。集合不一定是均一的。图形用户界面框架中的 Window 对象可以收集任意数量的控制对象 - Menu、Slider 和 Butto...
阅读全文
摘要:设计模式 ( 十三 ) 命令模式Command(对象行为型)1.概述 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的...
阅读全文
摘要:设计模式(十一)代理模式Proxy(结构型)1.概述 因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需...
阅读全文
摘要:设计模式(十)享元模式Flyweight(结构型)说明:相对于其它模式,Flyweight模式在PHP实现似乎没有太大的意义,因为PHP的生命周期就在一个请求,请求执行完了,php占用的资源都被释放。我们只是为了学习而简单做了介绍。1. 概述面向对象技术可以很好地解决系统一些灵活性或可扩展性或抽象性...
阅读全文
摘要:设计模式--外观模式Facade(结构型):1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同...
阅读全文
摘要:设计模式(八)装饰器模式Decorator(结构型)1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上...
阅读全文
摘要:设计模式(七)组合模式Composite(结构型)1. 概述在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面。例子1:就是多级树形菜单。例子2:文件和文件夹目录2.问题我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。我们可以把简单这些对象定义成类,然...
阅读全文
摘要:设计模式(六)桥连模式Bridge(结构型)1. 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?例子1:设想如果要绘制矩形、圆形、椭圆、正方形,我们...
阅读全文
1