随笔分类 -  设计模式

设计模式学习笔记
摘要:组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 阅读全文
posted @ 2008-09-09 07:51 peida 阅读(9233) 评论(0) 推荐(0) 编辑
摘要: 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 阅读全文
posted @ 2008-08-18 09:22 peida 阅读(7114) 评论(3) 推荐(0) 编辑
摘要:装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。说白了,就是在不改变对象的前提下,动态的增加其功能,即我们不希望改变原有的类,或采用创建子类的方法来增加功能的时候,这种情况下我们要采用装饰模式。 阅读全文
posted @ 2008-08-05 08:19 peida 阅读(1834) 评论(1) 推荐(0) 编辑
摘要:适配器模式、桥接模式与外观模式的区别与关系。适配器模式和桥接模式都是间接引用对象,因此可以使系统更灵活,在实现上都涉及从自身以外的一个接口向被引用的对象发出请求。适配器模式与桥接模式的联合。适配器模式与外观模式有些相似,都是对现存系统的分装。但这两种模式的意图完全不同。 阅读全文
posted @ 2008-08-01 11:30 peida 阅读(6715) 评论(2) 推荐(0) 编辑
摘要:外观模式(Façade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层的接口,这个接口使得这个子系统更加容易使用。通过这个接口,其他系统可以方便的调用子系统中的功能,而忽略子系统内部发生的变化。外观模式(Façade)是经常使用的模式之一,并且可以应用在任何层次和粒度的应用中,小到API的封装,大到封装整个系统。 阅读全文
posted @ 2008-07-31 18:06 peida 阅读(1771) 评论(0) 推荐(0) 编辑
摘要:桥接模式(Bridge),将抽象部分与它的实现部分分离,是他们都可以独立的变化。什么叫抽象与它的实现分离,这并不是说,让抽象类与其他派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。 阅读全文
posted @ 2008-07-17 10:39 peida 阅读(969) 评论(0) 推荐(0) 编辑
摘要:在软件开发中,我们经常会遇到系统间集成,在系统集成时,最常见的问题就是系统间的接口不一致。很多能够满足功能的系统模块,由于接口不一致,导致无法使用。例如,常用的媒体播放器是MS Media player和RealPlayer,他们的文件结构和软件接口完全不同,前者支持WMF格式的音频和视频,后者支持RM格式的音频和视频。如果我们希望自己的软件能够播放这两种播放器播放相应格式的音频和视频,我们该怎么办呢?一切从头开始,重写一个支持这两种格式的播放软件?呵呵,你要不觉得累你就重写了,呵呵。 阅读全文
posted @ 2008-07-15 08:18 peida 阅读(1759) 评论(2) 推荐(0) 编辑
摘要:1.概述 单例模式(Singleton Pattern)又称单件模式,单例模式保证一个类仅有一个实例,并提供一个访问的他的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化对个对象,一个最好的办法就是,让类自身负责保存他的唯一实例,这个类可以保证没有其他实例可以被创建并且他可以提供一个访问该实例的方法。 使用场合:当类只能有一个实例存在,并且可以... 阅读全文
posted @ 2008-06-27 00:03 peida 阅读(4314) 评论(6) 推荐(0) 编辑
摘要:1.概述 意图:我们将已经存在的对象作为原型,用户可以通过复制这些原型创建新的对象。 使用场合:当一个系统应该独立于产品的创建、构造和表示时,可以使用原型模式。在原型模式中,产品的创建和初始化再类的Clone方法中完成。在使用是,我们可以用一些列原型对象来代替生成相应对象的工厂对象,并且可以使拷贝、粘贴等操作独立于需要复制的对象。 结构: 原型模式(Protot... 阅读全文
posted @ 2008-06-26 08:44 peida 阅读(1512) 评论(2) 推荐(0) 编辑
摘要:1.概述 意图:将复杂对象的构建与表示分离,是同样的构建过程可以创建过程可以创建不同的表示。需要注意以下几点: (1)。构建与表示分离:表明生成器模式的结构,构建过程被封装在导航器中,生成器则实现具体的表示。 (2)。同样的构建过程:生成器模式关注的是构建过程,即构建过程是相同的。 (3)。不同的表示:生成器模式并不在意产生对象的结果,其构造的产品不一定... 阅读全文
posted @ 2008-06-18 09:21 peida 阅读(1184) 评论(0) 推荐(0) 编辑
摘要:前面学习了一部分创建型模式,发现了一个比设计模式更重要的东西:设计模式原则。对于设计模式来说,为什么这个模式要这样解决这个问题,而另一个模式要那样,它们背后都遵循的就是永恒的设计原则。可以说,设计原则是设计模式的灵魂。 三大基本面向对象设计原则: 1.针对接口编程,而不是针对实现编程 ;2。优先使用对象组全,而不是类继承;3.封装变化点。 ... 阅读全文
posted @ 2008-06-14 11:59 peida 阅读(1857) 评论(0) 推荐(0) 编辑
摘要:1. 简述 通过前面的学习,我们以传统的方式实现了简单工厂,工厂方法和抽象工厂,但是有些场合下如此处理,代码会变得冗余并且难以维护。假设我们要创建交通工具。可以是汽车,火车,轮船等,其结构如下: 我们可以采用简单工厂,通过参数指示创建所需要的对象类型。如果要增加子类,例如卡车和轿车,则必须增加参数和相应的代码。如果子类层次过多,则会是程序变得很难维护。 但我们... 阅读全文
posted @ 2008-06-12 14:23 peida 阅读(3439) 评论(4) 推荐(1) 编辑
摘要:1.概述 意图: 提供一个创建一系列相关或相互依赖的对象的接口,而无需指定其具体的类。 使用场合: 在以下场合可以使用抽象工厂: (1).一个系统要独立于其产品的创建、组合和表示时; (2).一个系统要有多个产品系列中的一个来配置时 (3).需要提供一个产品类库,而只想显示他们的接口,而影藏其... 阅读全文
posted @ 2008-06-10 21:58 peida 阅读(1465) 评论(0) 推荐(0) 编辑
摘要:1.概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了。 工厂方法模式(Factory Method),定义一个用... 阅读全文
posted @ 2008-06-08 10:56 peida 阅读(1667) 评论(0) 推荐(0) 编辑
摘要:简单工厂模式(Simple Factory). 阅读全文
posted @ 2008-06-06 23:08 peida 阅读(2963) 评论(1) 推荐(0) 编辑
摘要:委托与事件。 阅读全文
posted @ 2008-06-03 20:20 peida 阅读(1742) 评论(0) 推荐(0) 编辑
摘要:集合与泛型。 阅读全文
posted @ 2008-06-02 22:14 peida 阅读(1518) 评论(0) 推荐(0) 编辑
摘要:抽象类与接口。 阅读全文
posted @ 2008-06-01 08:11 peida 阅读(1674) 评论(1) 推荐(0) 编辑
摘要:多态,虚方法,方法重写等的理解。 阅读全文
posted @ 2008-05-31 18:56 peida 阅读(1918) 评论(2) 推荐(0) 编辑
摘要:属性,修饰符,封装和继承. 阅读全文
posted @ 2008-05-31 09:53 peida 阅读(1738) 评论(1) 推荐(0) 编辑