Tagged: Design Pattern
设计模式学习总结-策略模式
定义
它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
解析
- 策略模式中体现了两个非常基本的面向对象设计的基本原则:封装变化的概念;编程中使用接口,而不是对接口实现。
- 策略模式使开发人员能够开发出由许多可替换的部分组成的软件,[……]
设计模式学习总结-观察者模式
定义
Observer模式的意图是“定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新”。
从这段话里我们可以得到两个信息,如下:
1 观察者(具体执行操作的对象,有多个)
2 被观察者(顾名思义是被观察的对象,如果该对象发生某些变化则[……]
设计模式学习总结-装饰模式
一 定义
装饰模式是在不必改变原类文件和不使用继承的情况下,而是使用组合的方式动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
二 装饰模式的特点
(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。
(2)[……]
抽象工厂方法与工厂方法模式的区别
对于java来说,你能见到的大部分抽象工厂模式都是这样的:它的里面是一堆工厂方法,每个工厂方法返回某种类型的对象。
比如说工厂可以生产鼠标和键盘。那么抽象工厂的实现类(它的某个具体子类)的对象都可以生产鼠标和键盘,但可能工厂A生产的是罗技的键盘和鼠标,工厂B是微软的。这样A和B就是工厂,对应于[……]
设计模式学习总结-工厂方法模式
从简单工厂方法模式到工厂方法模式
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
工厂方法模式定义
一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
代码[……]
设计模式学习总结-简单工厂方法模式
简单工厂模式是类的创建模式。
假定有工厂,具体产品和抽象产品这三个元素存在,简单工厂模式就是由工厂类根据传入的参量决定创建出哪一种产品类的实例。简单工厂模式涉及到工厂角色,抽象产品角色以及具体产品角色等三个角色:
工厂类(Creator)角色:担任这个角色的是工厂方法模式的核心,含有与应[……]
设计模式学习总结-命令模式
1. 定义
把一个请求或者操作封装在命令对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
2. 要点
1) Command模式的根本目的在于将“行为请求者”与“行为实现者”解耦,在面向对象语言中,常见的实现手段是“将行为抽象为对象[……]
设计模式学习总结-模板模式
1. 定义
模板方法(Template Method)模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
来自GOF
2. 特点
1) Template Method模式是一种非常基础性的设计模式,在面向对象[……]
设计模式学习总结-原型模式
1. 定义
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。
工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创[……]
设计模式学习总结-单例模式
1. 简介
单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1) 一个类只能有一个实例
2) 自己创建这个实例
3) 整个系统都要使用这个实例
2. 两种单例类型
1) 饿汉式单例类
public class Singleton { private Singleton(){} //在自己内部定义自己一个实例,是不是很奇怪? //注意这是private 只供内部调用 private static Singleton instance = new Singleton(); //这里提供了一个供外部访问本class的静态方[......]<p class="read-more"><a href="http://neoremind.com/2010/06/singletondesignpattern/">继续阅读</a></p> |
设计模式学习总结-代理模式
一、简介
代理模式的作用是:
为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式一般涉及到的角色有:
1) 抽象角色:声明真实对象和代理对象的共同接口;
2) 代[……]