设计模式
文章平均质量分 52
yvhqbat
whuster
展开
-
MVC模型
透过 MVC 来看设计模式将帮助我们理解“模式”这一术语的含义。类的模型/视图/控制器( Model / View / Controller)三元组( MVC )被用来构建用户界面。MVC包括三类对象:模型 Model 是应用对象;视图 View 是它在屏幕上的表示;控制器 Controller 定义用户界面对用户输入的响应方式。不使用 MVC,用户界面设计往往将这些对象混在一起,而MVC则原创 2016-10-02 18:02:55 · 642 阅读 · 0 评论 -
状态模式(State Pattern)
意图 状态模式: 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 适用性 一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常, 有多个操作包含这一相同的条件结构。State模式将每一个条件分支放入一个独立的类中。这使得你可以根据对象原创 2016-11-28 15:44:39 · 340 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
1. 迭代器模式定义提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。适用性: 访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。 为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。类图:2. 实例//测试public class IteratorPatternTest { public static void main(原创 2016-11-28 14:24:08 · 386 阅读 · 0 评论 -
设计模式六大原则及综述
1. 设计模式博客设计模式C++实现 http://blog.csdn.net/wuzhekai1985/article/category/859763Java开发中的23种设计模式详解 http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html2. 设计模式的六大原则1、开闭原则(Open Close Principle原创 2016-11-28 11:34:04 · 342 阅读 · 0 评论 -
模板方法模式(Template Method Pattern)
1. 模板方法模式定义模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。类图:适用性:一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 这是Opdyke和Johnson所描述过的“重分解以一般化”原创 2016-11-25 16:26:40 · 273 阅读 · 0 评论 -
外观模式(Pacade Pattern)
1. 外观模式定义外观模式:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。类图: 2. 实例//测试public class FacadePatternTest { public static void main(String[] args){ Computer computer=new Computer原创 2016-11-25 15:44:25 · 442 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
1. 适配器模式定义适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。类图:2. 三类适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。总结一下三种适配器模式的应用场景:类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。对象的适配器模式原创 2016-11-24 11:31:00 · 297 阅读 · 0 评论 -
命令模式(Command Pattern)
1. 命令模式定义命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。命令模式的目的,就是达到命令的发出者和执行者之间解耦,实现请求和执行分开。 熟悉Struts的同学应该知道,Struts其实就是一种将请求和呈现分离的技术,其中必然涉及命令模式的思想!类图(class diagram):2. 实例//测试public c原创 2016-11-21 16:52:58 · 367 阅读 · 0 评论 -
策略模式(Strategy Pattern)
1. 策略模式定义策略模式:定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数。策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法原创 2016-11-21 16:25:52 · 279 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory Pattern)
1. 抽象工厂模式定义提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。工厂方法模式有一个问题就是,类的创建依赖工厂类。 也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。 所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式:创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。好处就是,如果你现在想增加一个原创 2016-11-21 15:51:08 · 311 阅读 · 0 评论 -
工厂方法模式(Factory Method Pattern)
1. 工厂方法模式工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。 在以下的三种模式中:第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类。所以,大多数情况下,我们会选用第三种—原创 2016-11-18 11:22:34 · 299 阅读 · 0 评论 -
观察者模式(Observer)
1. 定义观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一对多的关系。2. the class diagram3. 实例import java.util.*;public class原创 2016-11-17 15:11:35 · 346 阅读 · 0 评论 -
装饰模式(Decorator)
The Decorator Pattern :attaches additional responsibilities to an object dynamically.Decorators provide a flexible alternative to subclassing for extending functionality.装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求原创 2016-11-17 14:38:34 · 307 阅读 · 0 评论 -
单例模式
1. 单例模式意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。动机 对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印假脱机( printer spooler),只应该有一个文件系统和一个窗口管理器。单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处原创 2016-10-02 18:28:10 · 227 阅读 · 0 评论 -
类图
类图描述各个类、它们的结构以及它们之间的静态关系。1. 类一个类表示为一个线框; 在顶部以粗体写着类名; 其下是主要的操作; 再下是实例变量; 类型信息是可选的,我们使用 C + +的书写习惯,将类型名置于操作名(强调返回类型)、变量名或参数之前; 斜体表示该类或操作是抽象的。2. 类间的几种关系类继承,表示为一个从子类(图中的Line Shape)到父类(图中的 Shape)的三角形连线; 部原创 2016-10-02 18:56:09 · 400 阅读 · 0 评论 -
代理模式(Proxy Pattern)
1. 代理模式定义意图 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 类图: 适用性 在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式。下面是一 些可以使用Proxy模式常见情况: 远程代理(Remote Proxy)为一个对象在不同的地址空间提供局部代表。 虚代理(Virtual Proxy)根据需要创建开销很大的对象。 保护代理(Protecti原创 2016-11-28 16:18:49 · 412 阅读 · 0 评论