
设计模式
文章平均质量分 80
tyrone1979
这个作者很懒,什么都没留下…
展开
-
设计模式与GoF
设计模式与GoF随着设计模式领域文献增多,出现了很多设计模式的定义:1 设计模式是对反复出现的设计问题的重复解决方案- Smalltalk手册2 设计模式有一组描述如何实现软件开发领域中特定任务的规则所组成 Pree,19943 设计模式所强调的是重复出现的结构设计主题,而框架则重在细节设计和实现-Coplie和Schmit 19954 设计模式用以解决在特定设计情况下出现的重复设计问题,并给出该原创 2005-08-27 11:20:00 · 1431 阅读 · 0 评论 -
代理(Proxy)模式
为其他对象提供一种代理以控制对这个对象的访问。远程代理(remote proxy)为一个对象在不同的地址空间提供局部代表。保护代理(Protection proxy)控制对原始对象的访问。虚拟代理(Virtual proxy)根据需要创建开销很大的对象。智能指引(Smart Reference)取代简单的指针,它在访问对象时执行一些附加操作。包括对指向对象的引用计数,当第一次引用一个持久对象时,将原创 2005-09-26 08:06:00 · 1786 阅读 · 0 评论 -
享元模式(Flyweight)
通过共享技术有效地支持大量细粒度的对象。Flyweight是一个共享对象,它可以同时在不同上下文(Context)使用,并在每个上下文中Flyweight都可以作为一个独立的对象。Flyweight关键概念是内部状态和外部状态的区别。内部状态存在Flyweight中,外部状态取决于Flyweight上下文,因此不能共享。Flyweight模式对那些通常因为数量太大而难以用对象来表示的概念或实体进行原创 2005-09-18 12:04:00 · 2021 阅读 · 0 评论 -
外观模式(Facade)
为子系统中的一组接口提供一个一致的界面。Facade模式定义了一个高层接口,这个接口使得这一系统更容易使用。Facade(MortgageApplication)知道哪些子系统类负责处理请求。将客户的请求代理给适当的子系统对象。Subsystem classes((Bank, Credit, Loan)实现子系统的功能。处理有facade对象指派的任务。没有facade的任何相关信息;即没有引用f原创 2005-09-10 19:15:00 · 1398 阅读 · 0 评论 -
装饰(Decorator)
动态地给一个对象添加一些额外的职责。别名Wrapper有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或者一些行为,例如窗口滚动。原创 2005-09-04 19:24:00 · 1155 阅读 · 0 评论 -
桥接模式(Bridge)
分离接口与实现,以实现替换实现时不必修改客户端。 Abstraction(BusinessObject) 定义类的接口;RefinedAbstraction(CustomerBusinessObject) 扩展接口;Implementor(DataObject) 定义实现类的接口,这个接口可以不和Abstraction接口吻合,实际原创 2005-08-31 18:01:00 · 1247 阅读 · 0 评论 -
适配器模式(Adapter)
将某类的接口转换为客户所需的接口。Adapter能协调不兼容的接口,使它们共同工作。封装现有组件接口,使其适应客户端。Target(ChemicalCompound) 定义Client要使用的特定接口Adapter(Compound) 转换Adaptee接口为用户所要的Target接口。Adaptee(ChemicalDatabank)原创 2005-08-30 17:45:00 · 1140 阅读 · 0 评论 -
原型模式(prototype)
创建一个原型实例,通过拷贝这个原型来创建其他的此类对象。原型模式可以生成大量无上限的简单对象。Prototype(ColorPrototype) 声明可克隆本身的接口ConcretePrototype(Color) 实现克隆方法Client(ColorManager) 通过请求一个原型克隆,创建一个新对象。 代码//Prototyp原创 2005-08-30 17:44:00 · 1250 阅读 · 0 评论 -
生成器模式(Builder)
把复杂的对象的构建与其表示分离开,以便根据程序的需要在相同的创建过程中创建不同的表示。每个生成器必须有一个相同的方法名称。Client创建一个Director对象,指定一个build对象,配置Director。当product需要生成时,Director通知该builder。Builder处理通知,创建product。Client从Builder得到product。Builder(VehicleB原创 2005-08-29 16:52:00 · 1255 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory)
提供一个创建一系列相关或相互依赖的对象的接口,而不需指定它们具体的类。通常在run-time式创建一个ConcreateFactory类的单体实例。这个ConcreteFactory创建ConcreteProduct对象。为了创建不同的ConcreteProduct对象,clients需要使用不同的ConcreteFactory。AbstractFactory(ContinentFactory)定原创 2005-08-29 09:45:00 · 1135 阅读 · 0 评论 -
设计模式资源
使用设计模式的三个最重要的要素是:知道在何处查找设计模式 知道如何将设计模式应用于软件工作 如何识别出现在别人的软件中的设计模式 稍加练习,您会发现查找一个可能适用于特定问题领域的设计模式是相当容易的。实际上,通常会发现适用于您问题领域的模式太多了。一旦把所有可行的模式汇集成一份清单,那么,确定哪个模式最适合应用于您的软件设计会是一个难题。使用模式时,经验是关键。有了经验,您将知道去哪查找适合于原创 2005-08-28 10:58:00 · 2843 阅读 · 0 评论 -
组合模式(Composite)
将对象建立为部分-整体的层次关系或者构造树的数据表现。 Component (DrawingElement) 声明组合对象接口 显现接口默认操作。 声明访问并管理子组件的接口 (可选)定义访问父组件接口。Leaf(PrimitiveElement) 表示叶子对象,叶子没有孩子。原创 2005-09-02 15:06:00 · 1172 阅读 · 0 评论 -
工厂方法(Factory Method)
为创建的对象定义一个抽象类,虽然该抽象类负责创建对象,但由它的实现类决定哪个类需要实例化。即不在由单个工厂类决定应该实例化哪个子类。工厂类会将这决定推迟到每个子类中完成。Product(Page)定义一个由工厂方法实例化的对象接口。 ConcreteProduct(SkillsPage, EducationPage, ExperiencePage)Product接口的实现类 Creator(Doc原创 2005-08-29 09:08:00 · 1258 阅读 · 0 评论 -
单体模式(Singleton)
单体模式很简单,不需要UML描述/** * */package org.colimas.doxygen.qtools; /** * PatternBox: "Singleton" implementation. * * defines an Instance operation that lets clients access its unique instance. Instance i原创 2005-08-28 14:12:00 · 1467 阅读 · 1 评论 -
组件粒度划分与组件的集成
一种用于现有源代码组件集成方法 1.介绍 由于组件的概念没有模式化,以及现有技术种类的多样化,组件的形式也是多样的。大多数项目在开发过程中所考虑的组件划分方式和方法都不相同,这样导致现有项目中的组件很难重用到其它项目中。因此重组现有组件,把现有组件源代码重新分割或组合为新的组件的需求也越来越多。本文在源代码级别上根据源代码之间的调用关系,自定义了组件的划分粒度和组件的集成方原创 2005-12-17 12:30:00 · 4251 阅读 · 0 评论