模式与设计

作者:徐建祥(netpirate@gmail.com

时间:2006/09/22

来自:http://www.anymobile.org

1、何谓模式

“每个模式就是一条由三部分组成的规则,它表示了一个特定环境、一个问题和一个解决方案之间的关系。”--《建筑的永恒之道》(Christopher Alexander)

模式,就是对特定场景中,不断重复发生的问题,以及该问题的解决方案的整体抽象描述。

2、设计原则

²开闭原则(OCPOpen-Closed Principle)

是面向对象可复用的基石。模块、方法和类应该对扩展是开放的,而对更改是封闭的;对可变性进行封装。

²里氏代换原则(LSPLiskov Substitution Principle)

是继承复用的基石。在任何父类出现的地方都可以用它的子类来替代。在实际设计类的阶层体系结构时,这是一条很重要的原则。

²依赖反转原则(DIPDependence Inversion Principle)

针对接口编程,要依赖于抽象,不要依赖于具体的实现,也叫控制反转,IoC

²接口隔离原则(ISPInterface Segregation Principle)

使用多个专门的接口总是比使用单一的总接口要好。

²合成/聚合复用原则(CARPComposite or Aggregate Reuse Principle)

聚合:表示拥有或整体与部分的关系。

合成:更强的聚合关系。

尽量使用和成/聚合而不是继承来实现复用,Has-A”替代“Is-A”(继承)。

²迪米特法则(LoDLaw of Demeter)

一个对象应当对其他对象尽可能少的了解。降低各个单元的耦合,提高系统的可维护性。

3、GOF设计模式

“设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。”--《Design Patterns( Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides )

设计模式充分利用语言优势,站在更高的角度去审视我们的设计,但是不要为了模式而设计。

按照模式的目的和范围准则,GOF将众多的设计模式分为3类,共23个设计模式。

3.1创建型(Creational

抽象工厂(Abstract FactoryO

生成器(BuilderO

工厂方法(Factory MethodO

原型(PrototypeO

单件(SingletonO

3.2结构型(Structural

适配器(AdapterC O

桥接(BridgeO

组合(CompositeO

装饰(DecoratorO

外观(FaçadeO

享元(FlyweightO

代理(ProxyO

3.3行为型(Behavioral

责任链(Chain ResponsibilityO

命令(CommandO

解释器(InterpreterC

迭代(IteratorO

中介者(MediatorO

备忘录(MementoO

观察者(ObserverO

状态(StateO

策略(StrategyO

模板方法(Template MethodC

访问者(VisitorO

4、如何使用设计模式

1)学习模式,考虑设计模式是怎样解决问题以及相互的关联性;

2)寻找合适的对象,决定对象的粒度,制定对象接口,描述对象之间的关系;

3)使用设计模式进行优化,权衡性能和灵活性;

4)只有当模式提供的灵活性真正需要时,才有必要使用;

5)设计不能迁就模式,模式为设计服务。

参考:

Design PatternsErich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Java与模式》阎宏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值