《Head.First设计模式》的学习笔记(1)

书中列举了一些让大脑就范的原则,其实这也是我们在学习中应该遵循的原则。这些原则如下:

1、慢一点,你理解的越多,需要记的就越少。

2、勤做练习,自己记笔记。

3、上床睡觉之前不要再看别的书了,或者至少不再看其他有难度的东西。

4、要喝水,而且要多喝点水。

5、大声说出来。

6、听听你的大脑怎么说。

7、要有点感觉!

8、设计一点东西!

书中列举的设计原则:

1、封装变化。找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起。

2、针对接口编程,而不是针对实现编程。

举例说明:

假设有一个抽象类Animal,有两个具体的实现(Dog与Cat)继承Animal。

image

“针对实现编程”的做法:Dog d = new Dog();d.bark();

“针对接口编程”的做法:Animal animal = new Dog();animal.makeSound();

                                或者:Animal animal = getAnimal();animal.makeSound();

3、多用组合,少用继承

原因:

       a、继承会使类无限膨大,可能会使类变得臃肿。

       b、子类可能会继承父类中那些无用甚至有害的方法。

       c、组合比继承更灵活,可以实现在执行中动态改变对象的功能。

4、为了交互对象之间的松耦合设计而努力。

5、类应该对修改关闭,对扩展开放

6、要依赖抽象,不要依赖具体类
解释:不要让“高层组件”依赖“低层组件”,而且,不管“高层组件”还是“低层组件”,两者都应该依赖于抽象。
避免违反该原则的几个方针:
1)、变量不可以持有具体类的引用。
如果使用new,就会持有具体类的引用,可以使用工厂来避开这种引用。
2)、不要让类派生自具体类。
如果派生自具体类,就会依赖具体类,可以派生自抽象或接口。
3)、不要覆盖基类中已实现的方法。
如果覆盖基类中已实现的方法,那么基类就不是一个真正适合被继承的类。基类中已实现的方法应该被所有子类所共享。
7、最少知识原则。
解释:当你设计一个系统时,不管是任何对象,你都要注意与它交互的类有哪些,并注意它和这些类是如何交互的,尽量避免过多的类耦合在一起,带来维护成本的上升。
这个原则推荐的一些方针:
就任何对象而言,在该对象的方法内,我们只应该调用一下范围的方法
1)、该对象本身
2)、被当作方法的参数而传递进来的对象
3)、此方法所创建或实例化的任何对象
4)、对象的任何组件。
用代码加以说明:
 1public float  getTemp()
 2{
 3    //  没有采用该原则
 4    Thermoment thermoment = station.getThermoment();
 5    return thermoment.getTemperature();
 6}

 7
 8public float getTemp()
 9{
10    // 采用该原则
11    return station.getTemperature();
12}

(设计原则未完,待续)。

下一篇记录“策略模式”。

 

Tag标签: 设计模式
posted @ 2008-03-19 14:38 鹰击长空 阅读(938) 评论(7)  编辑 收藏 所属分类: 设计模式

  回复  引用    
#1楼 2008-03-19 19:26 | 王弈博 [未注册用户]
共同学习,呵呵
  回复  引用  查看    
#2楼 2008-05-05 11:34 | badnewfish      
楼主,拜托一件事情:
把第一章的鸭子类写全贴出来,因为我看到委托那儿看不太明白了,我懂c#的委托,但是书中似乎没有委托的申明代码!java和c#还是有点区别啊!
谢谢啦!
  回复  引用  查看    
#3楼 [楼主]2008-05-05 19:48 | 长空新雁      
@ badnewfish
没有用到委托,只是一般的调用而已,和你认为的委托不是一回事。

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-05-16 15:47 编辑过
 
另存  打印