摘要:
闲谈工厂方法
设计模式系列到了第四篇了,如果还不谈谈工厂方法设计模式就太对不起GoF了,为什么有如此一说?实际上工厂方法模式是好些模式的基石,她们或多或少的使用了工厂方法模式或以工厂方法为模型。
工厂方法模式是一种类创建型模式,她为创建一个对象提供了一个稳定的接口,而将对象创建的真正工作推迟到其子类实现,工厂方法允许将类的初始化工作延迟到子类,让子类决定实例化哪个具体的类。实际上很多时候对象的创建工作往往会发生变化,直接的去用new实例化对象会导致紧耦合,当需求发生变化的时候依赖项也会跟着发生变化。按照我们解决这类问题的一般原则:首先寻找变化点――对象创建,然后封装变化――用子类来封装,父类给客户程序提供稳定的接口,不稳定的地方给封装了,客户可见的只有稳定的父类接口,这也是我们面向对象开发人员一直所追求的目标。 阅读全文
随笔档案-2007年10月
设计模式初学者系列-模板方法
2007-10-09 09:04 by 横刀天笑, 4737 阅读, 收藏, 编辑
摘要:
模板方法属于行为型设计模式,行为型设计模式主要关注对象之间职责分配和算法的问题。类行为型模式使用继承来分配类之间的职责,模板方法就是个类行为型模式。对象行为型模式使用组合来分配职责。在我们构建软件的过程中大部分时候我们都是在思考实体之间的职责,怎样的职责分配最合理,不至于过重,又不至于过轻,而且又不越权。
模板方法Gof的定义是:在一个方法里定义算法的骨架,将一些步骤延迟到其子类。模板方法使得子类有机会重新定义算法的某些步骤而不改变算法的结构。模板方法实际上是利用多态这种晚绑定机制来将一些执行系列延迟到子类(运行时)。如下图: 阅读全文
设计模式初学者系列-单件模式
2007-10-07 12:04 by 横刀天笑, 8265 阅读, 收藏, 编辑
摘要:
在一个系统中,往往有一些服务只需要它们在整个系统中存在一个实例,并且在系统的任何角落都可以访问它。这样,单件模式出现了。比如在上一篇抽象工厂模式中,在一个系统中往往只有一个工厂,这样我们可以引入单件模式来解决这个问题。
对于单件模式的定义是:只允许系统中有一个实例存在,并且为该实例提供一个全局的访问点 阅读全文
设计模式初学者系列-开篇以及抽象工厂模式
2007-10-06 10:35 by 横刀天笑, 6634 阅读, 收藏, 编辑
摘要:
抽象工厂模式的使用场景
今天要谈的抽象工厂模式属于对象创建型模式。
创建型模式抽象了对象实例化的过程,它帮助系统不依赖于对象如何创建,如何实现,何时创建。个类创建型模式使用继承使对象创建多样化,一个对象创建模式将对象的创建代理到其他类。
那抽象工厂模式是为了解决什么问题的呢?给了我们怎样的设计思路?在软件开发中我们经常会碰到一系列相关的对象需要创建,如果按照常规做法我们就要为不同的对象创建编写不同的代码,复用性和可维护性都降低了。而且这些相关对象创建的方式也许不同,那么客户代码创建的时候就要针对不同的对象编码,对象创建的方式还是一个容易改变的地方。基于这样的情况提出了抽象工厂模式,抽象工厂模式为创建一系列相关对象提供了统一的接口,客户只要调用这个接口即可,封装了变化,隔离了变化,让客户代码稳定起来。
阅读全文
设计模式初学者系列-引子
2007-10-06 10:34 by 横刀天笑, 5584 阅读, 收藏, 编辑
摘要:
园子里有很多经典的设计模式系列的文章,本也不需要我这多余的一个系列,不过也许不多我这多余的系列吧。 在工作学习之余做了一些设计模式的笔记,无奈都是我一个人看,一直也不敢拿出来献丑,但想了想,知识只有在争论中才会更进步,思想也只有在争论中冒出火花。 常常有感于在群里和大家讨论的时候,一个又一个知识火花冒出,所以今天厚着脸皮将我的一些笔记放出来,而且是冒死放在首页,呵呵,真的希望大家能对我的文章大卸... 阅读全文