文章分类 -  設計模式

适配器模式(Adapter Pattern)
摘要:概述 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是本文要说的Adapter 模式。 意图 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作... 阅读全文
posted @ 2008-12-26 09:55 lasko 阅读(227) 评论(0) 推荐(0)
原型模式(Prototype Pattern)
摘要:概述 在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构。这时如果用工厂模式,则与产品类等级结构平行的工厂方法类也要随着这种变化而变化,显然不大合适。那么如何封装这种动态的变化?从而使依赖于这些易变对象的客户程序不随着产品类变化? 意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 结构图 Prototype模式结构图 生活中的例子 Protot... 阅读全文
posted @ 2008-12-25 16:31 lasko 阅读(218) 评论(0) 推荐(0)
工厂方法模式(Factory Method)
摘要:概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了。 意图 定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Meth... 阅读全文
posted @ 2008-12-25 13:47 lasko 阅读(286) 评论(0) 推荐(0)
建造者模式(Builder Pattern)
摘要:概述 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。 本文通过现实生活中的买KFC的例子,用图... 阅读全文
posted @ 2008-12-25 11:25 lasko 阅读(134) 评论(0) 推荐(0)
抽象工厂模式(Abstract Factory)
摘要:概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 模型图 逻辑模型: 物理模型: 生... 阅读全文
posted @ 2008-12-25 11:20 lasko 阅读(343) 评论(2) 推荐(0)
框架设计指导方针
摘要:目的 1明白软件架构的概念 2学习软件架构中的关键的设计原则 3学习软件架构中的关键特性 概述 软件体系框架经常被描述为软件系统的结构或是组织,而软件系统就是把各个功能组件整个在一起,完成特定的功能或者一套职能.换句话说,软件架构的重点是把各功能组件组织起来纳入到关注的领域中,如图1.按不同关注领域的应用系统框架。 除了将组件分组,重点考虑的是如何将各个不同部分的组件很好的在一起工... 阅读全文
posted @ 2008-12-25 09:05 lasko 阅读(291) 评论(0) 推荐(0)
代理模式、动态代理和面向方面
摘要:代理的意思很好理解,它借鉴了我们日常所用的代理的意思:就是本来该自己亲自去做的某件事,由于某种原因不能直接做,而只能请人代替你做,这个被你请来做事的人就是代理。比如过春节要回家,由于你要上班,没时间去买票,就得票务中介代你购买,这就是一种代理模式。这个情景可以形象的描述如下: class:火车站 { 卖票: {……} } 火车站是卖票的地方,我们假设... 阅读全文
posted @ 2008-12-24 15:25 lasko 阅读(154) 评论(0) 推荐(1)