设计模式
hahalq
这个作者很懒,什么都没留下…
展开
-
单例模式的学习
单例模式: singleton模式保证在应用程序中一个类只有一个对象存在 应用:数据库连接,资源管理器等 优点:便于管理,减少内存(便于垃圾回收) 实现:隐藏构造方法,向外提供一个静态的、已经实例化的应用(延迟加载) 要点: 一是某个类只能有一个实例; 二是它必须自行创建这个实例;原创 2010-07-19 21:18:00 · 389 阅读 · 0 评论 -
策略模式的学习
<br /> <br />策略模式:Strategy模式定义了一系列的算法,并对每个算法实现了封装,而且各个算法之<br /> 间是可以相互替换的,算法独立与使用它的客户。<br /> <br />图解:<br /> <br /> <br /> <br /> 客户拥有Strategy的应用,具体实现由Strategy的具体实现类(封装算法)来实现<br /> <br /><br /><br />优点:分离了用户和原创 2010-07-22 17:16:00 · 371 阅读 · 0 评论 -
简单工厂
<br />初学编程时,每次写代码都是将程序执行的逻辑按照问题的流程去走,也就是所谓的“面向过程编程“,其实这也是最容易理解和想到的,但是它的最大问题在于,问题并不是一成不变的,当问题发生变化时,这只有去改原来的代码,甚至重写。<br /> <br />后面学了”面向对象“,它运用”封装,继承、多态“使得程序”低耦合、高内聚“,进而可维护、可扩展、可复用、灵活多变,<br />可维护:修改程序时,只改要改之处,不会是其他发生变化<br />可扩展:增加功能时,不需要对原来的代码进行修改,只需编写增加的部分<原创 2010-11-15 14:19:00 · 453 阅读 · 0 评论 -
策略模式
策略模式:它定义了一系列的算法,并对其进行了封装,算法之间可以相互替换,这种替换对客户端是透明的。作用: 解耦了客户端和具体算法,用StrategyContext封装了算法的构造,选择,执行,变换,使得客户端与算法完全解耦StrategyContext类很像简单工厂里面的工厂类,根据条件判断应该返回什么实例,但是区别在于工厂类的职责只在构造对象并返回,但StrategyContext不同,他可以封装其他逻辑,如它不仅仅返回算法对象,他应该调用算法对象直接返回客户端所需的结果,所以,使用简单工厂模式,客户端必原创 2010-11-16 14:05:00 · 404 阅读 · 0 评论 -
设计原则
<br />1.单一职责原则:功能单一,即引起一个类发生变化的原因只有一个。<br /> <br /> 如果一个类承担了多于一个的职责,当其中一个职责发生修改时,就可能会削弱或压制这个类承担其他职责的能力,这就造成了过度耦合(以前写GUI程序时,恨不得把所有的事情都放在图形界面那个类里面完成O(∩_∩)O~)。<br /> <br /> 软件开发工程很重要的一部分工作就是:发现职责,并分离、封装他们,如果你有多于一个动因去修改一个类,那它就承担了多于一个的职责。<br /> <br原创 2010-11-17 10:42:00 · 403 阅读 · 0 评论 -
代理模式
<br />代理模式:通过增加一个中间层来控制对真实对象的访问。<br /> <br />如果我们要访问的对象由于不在本地、无法获得、构造复杂等原因无法立即获取,这时代理模式就可以用代理对象来帮我们实现访问,同时可以控制对真实对象的访问权限,或者做一些附加操作。<br /> <br />通过使代理对象和真实对象实现同样的接口,可以是客户端使用透明。<br /> <br />远程代理:要访问的资源不在本地(web services)。<br />虚拟代理:要访问的对象构造比较复杂,需时较长,用代理对象代替(h原创 2010-11-18 14:51:00 · 489 阅读 · 0 评论 -
模板方法模式
<br />有这样一个场景:一个算法或流程,它的步骤以及步骤之间的顺序是固定的,但具体的某一步可能有不同的实现。对于这么一个场景,可以建立多个类,各个类实现不同的实现,但是这样的缺点是:易错、难改,易错:应为步骤和顺序是固定的,而且在每个类中都要写一遍,程序员怎有心情不好的时候,就有可能把其中某一步给写错了;难改:如果流程发生变化,要在所有的类里面把流程都改一遍,很麻烦!<br /> <br />解决方法是:模板方法模式(template method),模板方法将步骤以及步骤之间的顺序等不易变化的部分提取原创 2010-11-22 15:02:00 · 375 阅读 · 0 评论 -
创建者模式
<br />创建者模式:将一个复杂对象的创建过程和表象分离开来,使得相同的创建过程可以创建不同的表象<br /><br /> 一个复杂对象的构建有多个步骤,构建步骤的顺序不变,但是每个步骤的具体实现可能是不同的,这就要用到创建者模式,创建一个接口,给出创建对象的所有步骤的接口,然后留出每个步骤具体实现给子类实现,然后由指挥者固定创建对象的顺序和逻辑,根据客户端的要求用不同的创建者实例,根据自己定的顺序和逻辑来构建对象。<br /><br /> 客户端不需知道创建的具体细节,只需对指挥者下命令,这就解耦了原创 2010-11-23 11:13:00 · 497 阅读 · 0 评论