设计模式
文章平均质量分 82
金风
这个作者很懒,什么都没留下…
展开
-
GoF设计模式简介
1、设计模式定义软件设计模式 : 是指在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案。2、设计模式历史设计模式起源于建筑行业,一位名叫Alexander的建筑师发现并总结了一些建筑行业的设计模式。在1995年,由于Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides合著的《设计模式——可复原创 2013-04-21 15:52:36 · 881 阅读 · 0 评论 -
模板方法模式(Template Method)
@@@模式定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。@@@练习示例: 登录控制@@@示例代码:\src\pattern\LoginModel.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package pattern;/*原创 2013-08-03 15:18:37 · 782 阅读 · 0 评论 -
组合模式(Composite)
@@@模式定义:将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。@@@练习示例: 商品类别树@@@示例代码:\product\Leaf.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package product;/** * 叶子对象 */publ原创 2013-07-28 16:50:01 · 922 阅读 · 0 评论 -
策略模式(Strategy)
@@@模式定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。@@@练习示例: 报价管理@@@示例代码:\pattern\Strategy.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package pattern;/** * 策略,定义计算报价算原创 2013-08-27 15:49:28 · 962 阅读 · 0 评论 -
状态模式(State)
@@@模式定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类@@@练习示例: 在线投票@@@示例代码:\pattern\VoteState.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package pattern;/** * 封装一个投票状态相关的行原创 2013-09-16 21:30:54 · 1050 阅读 · 0 评论 -
备忘录模式(Memento)
@@@模式定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。@@@练习示例: 仿真系统@@@示例代码:\pattern\FlowAMockMemento.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~packa原创 2013-09-25 21:59:19 · 832 阅读 · 0 评论 -
享元模式(Flyweight)
@@@模式定义:运用共享技术有效地支持大量细粒度的对象。@@@练习示例: 给系统加入权限控制@@@示例代码:[不使用模式的实现]\usual\AuthorizationModel.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package usual;/** * 描述授权数据的原创 2013-10-20 20:07:55 · 779 阅读 · 0 评论 -
解释器模式(Interpreter)
@@@模式定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。@@@练习示例: 输入一个模型公式,然后输入模型中的参数,运算出结果。@@@示例代码:/pattern/Expression.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package patt原创 2013-10-27 21:46:54 · 789 阅读 · 0 评论 -
装饰模式(Decorator)
@@@模式定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。@@@练习示例: 奖金计算。@@@示例代码:\pattern\TempDB.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package patern;import java.util.HashMap;import j原创 2013-11-03 16:00:42 · 990 阅读 · 0 评论 -
职责链模式(Chain of Responsibility)
@@@模式定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。@@@练习示例: 申请聚餐费用@@@示例代码:\pattern\Handler.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package pattern;/*原创 2013-11-28 21:15:52 · 828 阅读 · 0 评论 -
桥接模式(Brigde)
@@@模式定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。@@@练习示例: 发送提示消息@@@示例代码:\pattern\MessageImplementor.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package pattern;/** * 实现发送消息的统一接口 */public interfac原创 2013-12-01 15:53:01 · 1021 阅读 · 0 评论 -
迭代器模式(Iterator)
@@@模式定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需暴露该对象的内部表示。@@@练习示例: 工资表数据的整合@@@示例代码:\pattern\PayModel.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package pattern;/** * 工资描述模型对象 */public class原创 2013-07-21 15:01:44 · 958 阅读 · 0 评论 -
代理模式(Proxy)
@@@模式定义:为其他对象提供一种代理以控制对这个对象的访问。@@@练习示例: 水浒小故事@@@示例代码: (取自《设计模式之禅》)src\women\KindWomen.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package women;/** * 一种类型女人的定义 */public interface K原创 2013-06-30 16:21:55 · 869 阅读 · 0 评论 -
命令模式(Command)
@@@模式定义:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。@@@练习示例: 电脑开机@@@示例代码:\pattern\MainBoardApi.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package pattern;/** * 主原创 2013-07-14 09:44:33 · 903 阅读 · 0 评论 -
热身运动——简单工厂模式
首先,澄清两个概念。用户程序——服务使用者,服务程序——服务提供者。用户程序怎么使用服务程序提供的服务呢?最直接的方法如下:在JAVA中的用户类中直接创建一个服务类,然后调用服务类提供的方法;在C中用户模块直接调用服务模块的函数。举个例子,Client需要使用Impl提供的print功能来输出一个字符串。[JAVA CODE]xxx/Impl.java:package xxx;原创 2013-04-24 22:30:00 · 721 阅读 · 0 评论 -
单例模式(Singleton)
单例模式(Singleton)@@@模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。@@@练习示例:读取配置文件的内容。@@@示例代码:src/tools/AppConfig.java~~~~~~~~~~~~~~~~~~~~~~~~package tools;import java.io.IOException;impo原创 2013-05-19 21:11:06 · 988 阅读 · 0 评论 -
外观模式(Facade)
@@@模式定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。@@@练习示例: 模拟一个代码生成工具,来生成一个三层架构(表现层、逻辑层、数据层)的代码。@@@不用模式:coder\ConfigModel.java [描述配置的数据Model]~~~~~~~~原创 2013-05-08 21:30:49 · 692 阅读 · 0 评论 -
适配器模式(Adapter)
适配器模式(Adapter)@@@模式定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。@@@练习示例: 日志管理@@@第一版代码:log\LogModel.java [日志数据Model]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~pack原创 2013-05-15 22:08:26 · 864 阅读 · 0 评论 -
工厂方法模式(Factory Method)
@@@模式定义:定义一个用于创建对象(interface)的接口(这里的"接口"不是指interface而是method),让子类(通过override父类创建interface的method来)决定实例化哪一个类,Factory Method使一个类(interface)的实例化延迟到其(指Factory Method所在的类)子类。@@@练习示例: 导出数据的应用框原创 2013-05-29 22:10:23 · 812 阅读 · 0 评论 -
生成器模式(Builder)
@@@模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。@@@练习示例: 继续工厂方法模式中的导出数据的应用框架。@@@示例代码:\export\ExportHeaderModel.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package export;/** * 描述输出到文件头的内容的原创 2013-06-10 15:49:38 · 1155 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory)
@@@模式定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。@@@练习示例: 选择组装电脑的配件。@@@示例代码:src\computer\CPUApi.java~~~~~~~~~~~~~~~~~~~~~~~~package computer;/** * CPU的接口 */public interface CPUApi {原创 2013-06-01 14:05:58 · 793 阅读 · 0 评论 -
原型模式(Prototype)
@@@模式定义:用原型实例指定创建对象的种类,然后通过拷贝这些原型创建新的对象。@@@练习示例: 订单处理系统。@@@示例代码:\order\OrderApi.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package order;/** * 订单的接口 */public interface OrderApi原创 2013-06-11 17:30:23 · 855 阅读 · 0 评论 -
中介者模式(Mediator)
@@@模式定义:用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变他们之间的交互。@@@练习示例: 使用电脑来看电影。@@@示例代码:\film\Mediator.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package film;/** *原创 2013-06-16 16:49:06 · 833 阅读 · 1 评论 -
观察者模式(Observer)
@@@模式定义:定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式又被称为发布——订阅模式。@@@练习示例: 订阅报纸@@@示例代码:\src\pattern\Subject.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package patte原创 2013-07-07 18:16:29 · 1089 阅读 · 0 评论 -
访问者模式(Visitor)
@@@模式定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。@@@练习示例: 扩展客户管理的功能@@@示例代码:\pattern\Customer.java~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~package pattern;public abstract c原创 2013-12-02 21:10:56 · 908 阅读 · 0 评论