摘要:
1.依赖关系的转变: A=>B A=>C B=>c C=>D B=>D ........ 转化为: A=>B C=>B B=>D B=>E ... B为中介类,负责所有类的联系中枢。 2动机: 对象之间常会出现关联交互的情况,如果遇到需求的变更,这种直接的引用关系将面临不断地变化。在这种情况下,可以 用一个中介对象来管理对象之间的关联关系,避免出现紧耦合引用,从而更好地地御变化。 3.意图: ... 阅读全文
随笔分类 - design pattners
proxy模式
2007-09-10 23:11 by buru, 186 阅读, 收藏,
摘要:
动机:在面向对象系统中,有些对象由于某种原因,直接访问会给使用者\或者系统结构带来很多麻烦.如何不在失去透明操作对象的同时来管理/控制/(屏蔽?)这些对象特有的复杂性? --->可以增加一层间接层是软件开发的常见解决方式.--> gof中的意图:为其他对象提供一种代理以控制对这个对象的访问. 阅读全文
decorator装饰
2007-09-01 22:47 by buru, 146 阅读, 收藏,
摘要:
当我们想扩展一个类的功能的时候: 用接口;---每增加一个功能就会增加一个子类.导致子类膨胀. 解决方法: 动机 强类型语言下的设计模式.由于继承为类型引入静态特质,使得这种扩展方式缺乏灵活性.如何根据需要动态(在运行时)的实现,同时避免扩展功能增多带来子类膨胀? 意图:动态地灵活地给一个对象增加额外的职责. 怎么做的: 把要扩增功能的类的抽象类作为参数传到新的抽象类中,并作为新类的私有成... 阅读全文
Bridge学习笔记
2007-08-27 21:35 by buru, 204 阅读, 收藏,
摘要:
精神: 抽象不应该依赖于实现细节,实现细节应该依赖于抽象. 只要是面向对象语言,组合一定必继承好. 另外一种变化原因:平台的变化 比如 PC上以及手机Tank游戏的图形绘制,生效,操作等实现完全不同.怎么办? 放在一个动态的环境中做软件设计. 动机: 思考,事实上Tank类的固有逻辑,使tank有两个变化的维度---平台变化,型号变化. 如何应对? 意图:抽象部分与现实部分分离,使它们都可以独... 阅读全文
Adapter
2007-08-20 00:04 by buru, 201 阅读, 收藏,
摘要:
动机:应对迁移的变化意图:使原本由于接口不能兼容在一起工作的类通过适配器能一起工作; 对象适配器:类适配器:不推荐 不良高耦合---------------所以------要求尽可能使用面向接口编程 才好适配.-------------------------在.net framwork中1.com对象通过tlbimp.exe创建rcw (runtime callable wrapper)来适配... 阅读全文
Factory Method
2007-08-12 11:48 by buru, 186 阅读, 收藏,
摘要:
-----概论.导言.1.耦合关系:决定软件面对变化时的行为.模块之间紧耦合-->随变化,相关模块都变更.模块之间松耦合--->随变化,一些模块更容易变更.其他不变.抽象部分变化慢,细节变化快.要了解模块之间的关系,再运用设计模式.运用设计模式是有成本的.2.解决那个方向上的问题,就是运用了那种模式. 3.对象经常面临变化,但拥有比较稳定的接口. 意图:(from gof)..定义一个用于对象... 阅读全文
设计模式学习 builder
2007-08-11 13:13 by buru, 147 阅读, 收藏,
摘要:
1.用在什么地方?主要用于"分步骤构建一个复杂的对象".在这其中"分步骤"是一个稳定的算法,而复杂对象的各个部分则是经常变化的."将构建过程与表示分离,使相同的构建过程有不同的表示2.还是那个oo的原则:变化点在哪里,封装哪里.开放扩展,关闭修改---Builder模式主要在于应对复杂对象各个部分的频繁需求变动.3.与抽象工厂 的区别:抽象工厂用于解决系列对象的需求变动.而Builder解决"对象... 阅读全文
笔记--设计模式1
2007-05-30 09:45 by buru, 121 阅读, 收藏,
摘要:
from Erich Gamma的书《desigh patterns》引言1、不将变量声明为某特定的具体类的实例,而让它遵从抽象类所定义的接口;2、通过继承、对象组合实现复用; 原则一、针对接口编程,而不是针对实现编程;二、优先使用对象组合,而不是类继承;-->利用委托以方便改变对象组合方式;如何选择:1、考虑设计模式怎样解决设计问题的;2、浏览模式的意图部分;3、要研究模式怎样互相关联;4、研究... 阅读全文
浙公网安备 33010602011771号