设计模式
yangyang_cs
这个作者很懒,什么都没留下…
展开
-
设计模式——单例模式(学习笔记)
最近在学习设计模式,并决定把学习的东西写成笔记,也算是心得了吧。——前言定义:单例模式就是当你希望在你的工程中有个只会实例化一次的类(或者说只有一个对象)时,需要使用的设计模式。既然使用这种模式的类只可能有一个对象,自然要提供一个随时访问的全局访问点。 用更专业点的话说,单例模式确保类仅有一个实例,并该类提供了一个全局访问点。实现:单线程对于一个单线程的程序来说,原创 2012-03-25 19:14:53 · 687 阅读 · 0 评论 -
访问者模式
访问者模式大多数情况下,你都不需要这么个模式。适用场景,非常复杂:1. 你需要对一个含有不同种类的对象的集合,进行遍历操作。如果,这个操作时相同的,那就简单了,只需要让生成这些对象的类实现同一接口或者继承相同的类就可以了。2. 针对不同种类的对象的操作不同。不使用访问者模式,你可能需要一些判断。3. 针对相同种类的对象的操作还可能会改变(即原创 2012-04-19 08:52:12 · 394 阅读 · 0 评论 -
适配器模式(学习笔记)
适配器模式适配器,很简单,很常用。适用场景:举个例子就明白了:你有个电器,是双向插头的,但是,你只有三项插座,怎么办?你可以买一个带有双向插座的插排,当然插排的插头是三项的。这个插排,就充当着适配器。在我们软件设计过程中,场景就是这样的:1.有时,工具箱或类库不能够被使用的原因是因为其接口与应用程序所需要的接口不兼容。2.我们不能更改库接口,因为我们可能没有它的源代码。原创 2012-04-05 20:37:47 · 464 阅读 · 0 评论 -
责任链模式(学习笔记)
责任链模式 这不就是一个踢皮球模式么?!适用场景: 链式处理结构。 什么是链式处理结构? 我记得看新闻,经常有群众想要解决一个问题,先去A部门,A部门说,这事不归我管,去B部门吧。到了B处,也说不归他们管,让去找C去。。。这个群众就被这么像皮球一样踢,就怕来回踢,踢出个环来,就死循环了。这就是一个链式处理结构。比如,你要请假原创 2012-04-05 18:23:23 · 745 阅读 · 0 评论 -
设计原则(学习笔记)
设计原则迪米特法则:将类和成员的可访问性降到最小化,每一个软件单位对其他的单位都只有最少的知识,而且 局限与那些与本单位密切相关的软件单位,迪米特法则也称最少知道原则。这个思想的意图就是要降低类之间的耦合度,大家都知道,耦合性越低,我们修改起来就越容易。合成复用原则: 优先使用对象的组合,而非类的继承。 什么是组合? 说白原创 2012-04-03 11:04:07 · 447 阅读 · 0 评论 -
装饰模式(学习笔记)
装饰模式装饰模式(Decorator Pattern)还有一个名字,包装器(wrapper),后面的名字,更贴切。适用场景(个人理解):我们想动态扩展一个对象的功能,更具体的说:想在一个对象调用的某个方法之前或之后加一些操作,以扩展其功能。装饰模式让上述想法实现像穿衣服一样简单而优雅!举例:我们想向一个组件加一个边框。上述需求可以通过继承来实现,但是十分不灵活,假设你又想加一个原创 2012-04-02 10:57:34 · 370 阅读 · 0 评论 -
模板模式(学习笔记)
模板模式模板模式看起来很简单,看起来。。。。先看一下uml图吧:这不就是一个继承么?!子类完成超类的抽象方法?!重要的是templeteMethod();可以看到,它规定的operation1与operation2的执行顺序。定义:定义一个操作中的算法(也就是上图中的templeteMethod方法)的骨架,而将一些步骤延迟到子类中。模板方法可以说,使用了代码复用最常用原创 2012-03-31 21:40:42 · 327 阅读 · 0 评论 -
状态模式(学习笔记)
状态模式状态模式和策略模式的uml图是一样的!除了名字之外都一样。适用场景(引自百度百科):1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。 我倒是觉得,这两个模式的思想是一样的,策略模式是把解决问题的策略抽象为一个接口(或抽象类),Context只与接口耦合,从而降低原创 2012-03-30 10:49:14 · 331 阅读 · 0 评论 -
策略模式(学习笔记)
策略模式策略模式,更多体现的是一种思想。适用场景(个人理解):当解决一个问题时,有很多种解决方法(这种方法就称之为算法或策略),你需要根据不同的场景或者运行情况来决定使用哪种方法,或者使用哪种方法,要交给客户端来决定。这时,你最好把解决这个问题的方法抽象为一个接口或一个抽象类。不同的解决方法来实现这个接口或继承这个抽象类。而不是把多种方法都写在一个类中。uml图如下:原创 2012-03-29 18:35:48 · 305 阅读 · 0 评论 -
简单工厂模式、工厂模式、抽象工厂模式(学习笔记)
弄清楚在什么场合下该使用怎样的设计模式才是最重要的 ——谨记1 简单工厂模式: 适用场合(个人理解):我们有属于某一个类型的许多类(可能是实现同一接原创 2012-03-29 08:29:44 · 1249 阅读 · 0 评论 -
建造者模式(学习笔记)
建造者模式建造者模式是创建复杂对象才使用的设计模式。适用场景:在你的设计当中,有一个特别复杂的类,这个类是由多个对象组合而成,创建自然也比较复杂。而它的创建方式也有很多种(由不同的对象组合而成),这时,我们希望把这个类的构建与其表示分离开来,这样既方便构建,还可以代码复用。定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。原创 2012-04-14 20:43:21 · 372 阅读 · 0 评论