
设计模式
文章平均质量分 76
Alex_zhuang
这个作者很懒,什么都没留下…
展开
-
享元模式
享元模式(Flyweight),就是运用共享技术有效地支持大量细粒度的对象。 享元对象能做到共享的关键是区分内部状态(Internal State)和外部状态(External State)。内部状态是存储在享元对象内部并且不会随环境改变而改变。因此内部状态并可以共享。 外部状态是随环境改变而改变的、不可以共享的状态。享元对象的外部状态必须由客户端保存,并在享元对象被创建之后,在需原创 2011-11-22 00:35:00 · 1016 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
适配器模式定义: 将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份。 为何使用? 我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,但是如果我们没有源代码,或者,我们不愿意为了一个应用而修改各自的接口。 怎么办? 使用Adapter,在这两种接口之间创建一个混合接口(混血儿)。 如何使用?转载 2012-01-11 21:49:01 · 559 阅读 · 0 评论 -
观察者模式(Observer Pattern)
观察者模式定义: Define a one-to-many dependency between objects so that when one object changes state , all its dependents are notified and updated automatically . 定义对象之间的“一对多”的依赖关系,这样,当一个对象的状态发生变化时,所有依赖于这原创 2012-01-12 15:57:29 · 562 阅读 · 0 评论 -
组合模式(Composite Pattern)
组合模式的定义: Compose objects into tree structures to represent part-whole hierarchies . Composite lets clients treat individual objects and compositions of objects uniformly . 将对象组成树形结构来表明部分-整体的层次关系。组合原创 2012-01-12 11:51:28 · 835 阅读 · 0 评论 -
原型模式(Prototype Pattern)
原型模式的定义: Specify the kinds of objects to create using a prototypical instance , and create new objects by copying this prototype . 使用原型实例指定要创建的对象类型,通过复制这个实例创建新的对象。 原型模式在生活中的应用场景: 假如你刚给自己的客厅做了装原创 2012-01-11 12:07:29 · 764 阅读 · 0 评论 -
状态模式(State Pattern)
State模式的定义: 不同的状态,不同的行为;或者说,每个状态有着相应的行为. 何时使用? State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了. 不只是根据状态,也有根据属性.如果某个对象的属性不同,对象的行为就不一样,这点在数据库系统中出现频率转载 2012-01-12 15:40:21 · 602 阅读 · 0 评论 -
策略模式(Strategy Pattern)
Strategy策略模式是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类. Stratrgy应用比较广泛,比如, 公司经营业务变化图, 可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现. 这里以字符串替代为例, 有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多转载 2012-01-12 15:15:58 · 565 阅读 · 0 评论 -
代理模式(Proxy Pattern)
代理模式(Proxy Pattern)定义:对其他对象提供一种代理以控制对这个对象的访问。 代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。代理模式经常在以下情景中使用: 1.代理一些开销很大的对象,这样便能迅速返回,进行其它操作,只有在真正需要时才实例化; 2.安全控制、同步控制,缓存处理结果,缓存初始化开销很大的对象,统计对象的使用以及异常处理等原创 2012-01-11 17:55:16 · 615 阅读 · 0 评论 -
Shallow copy & Deep copy
面向对象编程语言都提供了内存中对象的复制能力,Java语言提供了对象的浅拷贝和深拷贝。 浅拷贝(Shallow copy): 复制一个对象时,如果它的一个属性是引用,则复制这个引用,使之指向内存中同一对象。 深拷贝(Deep copy): 但如果为此属性创建了一个新对象,让其引用它,则是深拷贝。 实现深拷贝:使类实现java.io.Serializable接口,把原型对象序列化,原创 2012-01-11 11:33:21 · 823 阅读 · 0 评论 -
工厂方法模式
工厂方法模式定义: Define an interface for creating an object , but let subclasses decide which class to instantiate . Factory Method lets a class defer instantiation to subclasses . 为创建对象定义一个接口,让子类决定实例化哪个类。原创 2012-01-07 16:05:52 · 482 阅读 · 0 评论 -
实现简单工厂模式
实现简单工厂模式 package factory.test3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import factory.test2.Operation; public class Main { public static vo原创 2011-09-03 18:09:25 · 533 阅读 · 0 评论 -
单例模式
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。 单例设计模式分为两种:饿汉式和懒汉式 1,饿汉式 public class Single{ private static final Single s = new Single(); private Single(){原创 2011-12-20 11:25:43 · 510 阅读 · 0 评论 -
模板方法(Template Method)模式
模板方法(Template Method)模式定义: Define the skeleton of an algorithm in an operation , deferring some steps to subclasses . Template Method lets subclasses redefine certain steps of an algorithm without ch原创 2012-01-06 23:52:38 · 1063 阅读 · 0 评论 -
模式和面向对象可复用设计的几大原则
什么是模式?模块化的过程是怎样的? 人们在自己的环境中不断地发现问题并寻找问题的解决方案,在这过程中,发现的问题和解决方案以不同的面孔重复出现,在这些不同的面孔背后又有共同的本质,这共同的本质就是模式。 模块化的过程就是把问题抽象化,在忽略掉不重要的细节后,发现问题的一般性本质,并找出普遍适用的解决方案的过程。 在软件开发中,为何我们需要去了解和运用模式? 了解模式有利于我们更好地原创 2011-12-05 22:33:17 · 1194 阅读 · 0 评论 -
外观模式(Facade Pattern)
外观模式是软件工程中常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。 在真实的应用系统中,一个子系统可能由很多类组成。子系统的客户为了它们的需要,需要和子系统中的一些类进行交互。客户和子系统的类进行直接的交互会导致客户端对象和子系统(Figure1)之间高度耦合。任何的类似于对子系统中类的接口的修改,会对依赖于它的所有的客户类造成影响。原创 2012-01-12 10:41:54 · 731 阅读 · 0 评论