• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
程序人生
博客园    首页    新随笔    联系   管理    订阅  订阅

《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}

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

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

 

posted @ 2008-03-19 14:38  鹰击长空  阅读(2012)  评论(4)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3