设计模式
serenada
用心去感受编程之美,用静去悟编程之道!
展开
-
状态模式(state) -- (模式之十三)
1.概念:状态模式(state):允许一个对象在其状态改变时,改变它的行为。看起来对象似乎修改了它的类。别名:状态对象(Objects for State)。2.图示:3.使用场景1). 一个对象的行为取决于它的状态,并且他必须在运行时刻根据状态改变它的行为。2 ).一个操作中含有庞大的多分枝的条件语句,并且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚原创 2011-11-14 23:15:25 · 884 阅读 · 0 评论 -
ABSTRACT SERVER -- (模式之十四)
/* * 上面是一个灯和控制灯开关的例子,一个是灯,一个是等控制类,如果要控制灯,控制类直接依赖或者作用于灯,这样的设计是最简单也最明了的, * 不过根据设计原则我们违反了依赖导致原则(DIP)和开放封闭原则(OCP),依赖倒置即:依赖接口(抽象)而不依赖具体的实现, * 此列中依赖于具体的LIGHT(类)了, 开放封闭原则:我们在任何控制开关的地方都要带上LIGHT这样就不容易管理和原创 2012-02-21 09:42:48 · 979 阅读 · 0 评论 -
抽象工厂(abstract Factory) -- (模式之九)
抽象工厂(abstract Factory)1.前言本来今天打算重新全部把抽象工厂自己总结一遍,可当我在准备写的时候,发现一位网友写得很详细,有些概念我还找不到更好的表达方法时,他哪里已经讲得很明白,所以今天就将原来的文章修改一下发来此处,如有不妥之处还望大家指出,2.工厂方法,抽象工厂区别工厂方法是针对一个产品等级的解决方案,而抽象工厂是针对多个产品等级的结构3.原创 2011-11-01 11:00:46 · 1181 阅读 · 0 评论 -
模板模式(template) - - (模式之十)
1.概念GOF给模板方法(Template Method)模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这里的算法的结构,可以理解为你根据需求设计出来的业务流程。特定的步骤就是指那些可能在内容上存在变数的环节。注:重点是操作的算法的骨架不变,即:运算的顺序不发生改变2.图示组成对象:1).A原创 2011-11-07 19:33:16 · 543 阅读 · 0 评论 -
策略模式(Strategy) - (模式之十一)
1.概念又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式是属于设计模式中对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.Stratrgy应用比较广泛,比如, 公司经营业务变化图, 可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现.可以动态的改变对象的行为.原创 2011-11-08 17:56:44 · 688 阅读 · 0 评论 -
合成模式(Composite) -- (模式之六)
1:背景故事 在来看合成模式之前我们先来看看一个故事,想必大家都听过, 这里我从网上看见一个网友的举的例子,因为觉得好所以也就拿过来一用;故事如下:从前有个山,山里有个庙,庙里有个老和尚在给小和尚讲故事,讲的什么故事呢?从前有个山, 山里有个庙……。奶奶的故事要循环多少次,根据你多长时间睡着而定。 在故事中有山、有庙、有和尚、有故事。因此,故事的角色有两种: 一种里面没有其它角色;另一种内原创 2011-10-28 22:51:42 · 709 阅读 · 0 评论 -
代理模式(Proxy) -- (模式之七)
1.代理 指的就是一个角色代表另一个角色采取行动,就象生活中,机票代售,火车票代售,你去代理点买票,其实并不是直接从航空公司或者火车票供应商手买票,二是从代理店买来的票,我们不用直接去和供应商打交道, 这个事情交给代理来做了,2.概念 为一个对象提供一个替身或者占位符以控制对这个对象的访问 代理模式设计的到角色:原创 2011-10-30 23:09:40 · 905 阅读 · 2 评论 -
原型模式 (Prototype Pattern ) -- (模式之十二)
1.概念 原型模式(Prototype Pattern)是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。原型模式中复制模型对象是通过Clone()方法实现的原创 2011-11-11 16:35:53 · 668 阅读 · 0 评论 -
工厂方法(Factory Method) -- (模式之八)
1.背景工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。2.概念工厂方法模式是类的创建模式,又叫虚拟构造子模式(virtual constructor)或者多态性工厂模式(Polymorphic Factory),在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做。这个核心工厂原创 2011-10-31 12:34:21 · 1054 阅读 · 2 评论 -
Thinking...!thinking life,think how to improve myself ablity quickly!
Recently,I think How to improve my ablity to quick and nicety! I read the book <<Code CompleteSecond Edition>> maybe some help for me and give some power!原创 2011-11-07 19:59:46 · 1153 阅读 · 3 评论 -
感冒也来凑热闹!感冒而有感!
本来昨天要更新设计模式的:动态代理模式,可是很不幸昨天感冒了,而且还比较严重,一天都感觉不是很舒服,哎!看来做程序员就是这个命,学的东西比什么都要多,干活也很多,在没有写代码前,被大量的媒体,小道传说,电视,黑客电影把我们的职业渲染得太美好,等你真正入了行,你就会发觉其实不是你想象的那样,这行依然很艰辛,很不容易,都说程序员是在拿青春换钱,我觉得这样也还可以吧,至少你换回来钱了,但更怕的是有的程序原创 2011-11-03 12:52:53 · 727 阅读 · 0 评论 -
下周预告
每个人都会有惰性,我也不例外,做一件事情没有恒心,不能长久的坚持,总是中途而废,现在我把自己的计划公布出来,一是希望能起到监督自己的作用,二是能给读者一个大概的范围,本周本博客会有哪些方面的知识更新,希望在此能与诸君共勉,共同努力,来提升自己,帮助他人,让我们一起更快的成长, 本周更新内容:时间(2011.10.31 - 2011.11.6) 设计原创 2011-10-30 23:42:15 · 590 阅读 · 0 评论 -
架构师应该而且必须知道的97件事!
1. 客户需求重于个人简历 ( Nitin Borwankar )客户需求至上。为了自己的简历更炫而采用新技术是沽名钓誉,往往事与愿违。2. 简化根本复杂性 ,消除偶发复杂性 ( Neal Ford )分析问题好比拨云见月、水落石出。3. 关键问题可能不是出在技术上 ( Mark Ramm )团队同心,其利断金。4. 以沟通为中心,坚持简明清晰的表达方式和开明的领导转载 2011-11-16 23:58:56 · 918 阅读 · 2 评论 -
门面模式(Facade) - (05)
门面模式:1.概念:为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。2.组成:门面模式有三个角色组成:1) 门面角色( facade ):这是门面模式的核心。它被客户角色调用,因此它熟悉子系统的功能。它内部根据客户角色已有的需求预定了几种功能组合。2) 子系统角色:实现了子系统的功能。对它而原创 2011-10-26 19:30:44 · 745 阅读 · 0 评论 -
装饰者模式(Decorator)(04)
装饰者模式在API中使用最为典型的就是流的使用方式,层层包装,你想要什么流就组装什么流即可,如:InputStream,FileIInputStream,BufferedInputStream等,我将一个简单的代码示例贴出来给大家看看,这是一个很简单的实现,/** * 实际事物中的抽象最顶层的接口 * @author lvzh * */public interface Co原创 2011-10-25 16:44:15 · 741 阅读 · 0 评论 -
设计模式之观察者(02)
观察者模式(Observer)Observer模式的功用,是希望两个(或多个)对象,我们称之为Subject和Observer,当一方的状态发生改变的时候,另一方能够得到通知。也就是说,作为Observer的一方,能够监视到Subject的某个特定的状态变化,并为之做出反应。一个简单的例子就是:当一个用户视图中的数据被用户改变后,后端的数据库能够得到更新,而当数据库被其他方式更新后,用户视图中原创 2011-08-24 16:16:26 · 549 阅读 · 0 评论 -
设计模式之单列模式(03)
package singleton;public class Singleton {//将构造函数写成私有,防止外部通过 new关键字来创建对象private Singleton(){}//定义变量来保存实例private static Singleton instance;//防止多线程 来同时创建变量//此处必须有:synchro原创 2011-10-24 20:35:33 · 555 阅读 · 0 评论 -
java 工厂模式之简单工厂(01)
Java工厂模式 Java工厂模式看了这么多关于工厂模式的讲解,还是觉得这篇文章讲的好理解,贴出来和大家分享分享。 一、引子 话说十年前,有一个****户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他开车。不过,****户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上Audi说“开奥迪车原创 2011-05-05 10:39:00 · 734 阅读 · 0 评论 -
对学习技术,工作的一些看法,两年工作经验
大学毕业到现在,再有三月即工作满两年,这两年换了一次工作,分别在每家工作待了一年,一直走到现在其实很不容易,回头看看不管是工作还是生活,发觉自己成熟得太慢!和自己的期望还是有很大差距!IT这个行业付出和回报是永远不成比例的,我不是科班出生,本科读的生物工程,也没有读过研究生,像我这样的普通人,一抓一大把!以下是我对自己工作,学习的一点看法,目的一:用来反思自己,目的二:给别人一些参考的意见!原创 2012-05-09 15:02:14 · 2034 阅读 · 1 评论