设计模式的UML图(转)

1.抽象工厂(Abstract Factory)模式
设计模式的UML图(转)

意图:为特定的客户(或情况)提供特定系列的对象。

2.类的适配器(Adapter)模式
设计模式的UML图(转)

意图:将一个类的接口转换成客户希望的另外一个接口。

3.对象的适配器(Adapter)模式
设计模式的UML图(转)

意图:将一个类的接口转换成客户希望的另外一个接口。

4.桥梁(Bridge)/柄体(Handle and Body)模式
设计模式的UML图(转)

意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

5.建造(Builder)模式
设计模式的UML图(转)

意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

11.门面(Facade)模式
设计模式的UML图(转)

意图:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

12.工厂方法(Factory Method)/虚拟构造子(virtual
Constructor)/多态性工厂(Polymorphic Factory)模式
设计模式的UML图(转)

意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。

13.享元(Flyweight)模式
设计模式的UML图(转)

意图:运用共享技术有效地支持大量细粒度的对象。

14.解释器(Interpreter)模式
设计模式的UML图(转)

意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

15.迭代子(Iterator)/游标(Cursor)模式
设计模式的UML图(转)

意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

16.调停者(Mediator)模式
设计模式的UML图(转)
意图:用一个中介对象来封装一系列的对象交互。

17.备忘录(Memento)模式
设计模式的UML图(转)

意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

18.观察者(Observer)模式
设计模式的UML图(转)

意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。

19.原型(Prototype)模式
设计模式的UML图(转)

意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

20.代理(Proxy)模式
设计模式的UML图(转)

意图:为其他对象提供一种代理以控制对这个对象的访问。

21.单例(Singleton)模式
设计模式的UML图(转)

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

22.状态(State)模式
设计模式的UML图(转)

意图:允许一个对象在其内部状态改变时改变它的行为。

23.策略(Strategy)模式
设计模式的UML图(转)

意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

24.模版方法(Template Method)模式
设计模式的UML图(转)

意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

25.访问者(Visitor)模式
设计模式的UML图(转)

意图:表示一个作用于某对象结构中的各元素的操作。

==========================================================

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

设计模式的UML图(转)

经管08018_XP起步:其它部分

“XP起步”部分,到现在已经把正确的思维习惯介绍完毕。

而这些方面:
1、简单设计;
2、共享代码所有权;
3、编码标准;
4、每周40小时工作制
会自然的依序出现。

其它的:
1、现场客户;
2、验收测试;
3、教练和跟踪者
就可能要花花一些时间。

一、简单设计:
1、运行所有测试;
2、不包括重复代码;
3、清楚地表现出程序员对全部代码的意图;
4、包括尽可能少的类和方法。

简单的才会保留下来!

如何做到简单设计:
1、首先写验收测试;
2、保持每个类只负责一件事;
3、使用Demeter法则;——待介绍
4、使用定性的概念;——待介绍
5、使用CRC卡片(白板)来探索;——付诸行动!离开电脑(开发环境),在白板前进行设计

二、代码所有权
开发团队中的每个人都具有权力和义务修改它。
纪律——单元测试+代码版本控制

三、现场客户
如果客户没有给你提供一个全职的、一流的合作人员,请求他们免除这个项目。
因为他们不是认真的。
例外:
1、管理者或者开发者之一就是领域专家;
2、做探索性工作,客户也不知道自己想要什么;
3、已经有良好的沟通渠道。

四、验收测试
知道你什么时候做完。
单元测试给开发人员信心;验收测试给客户信心。
验收测试是开发者和客户直接的合同。
如何写验收测试?什么时候写验收测试?测试什么?
自动化验收测试。
功能测试与单元测试。功能测试应该是开发人员跟很多测试人员共同完成。

五、编码标准
保持团队不会被无用的小事弄得心烦意乱。
格式化编辑工具+好的易于执行的协议!

六、加班不是答案
“可持续发展”!
加班:你不想工作的时候而花费在工作上的时间。

七、一幅画胜过千言万语
找到好的“比喻”

八、寻求指导
跟一个伟大的老师学习1天,胜过自己勤奋的学习1000天。

九、保持记录
搜集数据、保持记录、做好跟踪:
1、鼓励每个人更好的估算;
2、更好的识别项目进度;
3、识别出问题的范围。
跟踪:
1、估算和实际执行的情况;
2、创建的和通过的验收测试。

wiki!

经管08017_XP起步:持续集成及过程至上

“持续集成”:降低风险、更易查错、保持速度。
 
如何持续集成:
1、每个配对做足够的单元测试;
2、“集成机器”——公用;
3、保持代码最新;(版本控制和管理)
 
到达任何地方都没有捷径可走。
始终停留在过程中,不要偏离方向,注意:
1、提高注意力;
2、使漂流趋势更明显;
3、保持领先;
4、行为规律;
5、避免最后期限的压力;
6、首先考虑广度;——产品的业务价值
7、与客户重新协商;
8、一起坚持
9、推迟非业务的细目;
10、偶尔加班;
11、了解并跟踪方法的效果。

经管08016_XP起步:关于“重构”

使代码运行,使代码正确,使代码运行得更快。
 
重构,使代码正确。
重构,使代码简单。
 
增加代码比删除代码更容易。
使变化成为可能。
将所学知识运用到代码中。
 
使变化的风险减小,使优化更容易。
 
如何重构:
1、先编写运行测试;
2、先编写代码,然后在重构代码;
3、将增加新的功能视为重构代码的机会;
4、将纠正错误视为重构的机会。
 
何时重构:
不要拖延时间,看到机会就重构。
 
什么时候不需要重构:
1、在代码不能工作或者需要重写代码的时候;
2、在不确定如何能使重构进行得更好的情况下;
3、不要凌驾于客户的需要之上进行重构。

经管08015_XP起步:关于“结对编程”

结对编程的好处:
1、代码质量
2、速度——代码、沟通
3、降低风险——交叉培训

如下几个因素增加了项目失败的风险:
1、进度缓慢;
2、缺乏充分的沟通;
3、过分依赖于个人英雄主义行为。

如何进行结对编程:
1、驾驶员和领航员——互换:
2、交换配对——不要在一个任务进行的过程中交换配对
3、经常休息
4、坐在汽车后座对司机有影响的人
5、花一些时间学习工具
6、花一些时间来创建共同的词汇表
7、将设计讨论局限在一个小范围内
8、不要放弃
9、物理环境要适合结对编程
10、开发环境标准化
11、排除异己!
12、尊重和爱!

什么时候不需要结对编程:
1、探索新的事物;
2、针对有可能产生错误的问题上,有多种想法时。

在结对编程和单独编程之间寻找折中。