《Head.First设计模式》的学习笔记(1)
书中列举了一些让大脑就范的原则,其实这也是我们在学习中应该遵循的原则。这些原则如下:
1、慢一点,你理解的越多,需要记的就越少。
2、勤做练习,自己记笔记。
3、上床睡觉之前不要再看别的书了,或者至少不再看其他有难度的东西。
4、要喝水,而且要多喝点水。
5、大声说出来。
6、听听你的大脑怎么说。
7、要有点感觉!
8、设计一点东西!
书中列举的设计原则:
1、封装变化。找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起。
2、针对接口编程,而不是针对实现编程。
举例说明:
假设有一个抽象类Animal,有两个具体的实现(Dog与Cat)继承Animal。
“针对实现编程”的做法: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)、对象的任何组件。
用代码加以说明:
1
public float getTemp()
2
{
3
// 没有采用该原则
4
Thermoment thermoment = station.getThermoment();
5
return thermoment.getTemperature();
6
}
7
8
public float getTemp()
9
{
10
// 采用该原则
11
return station.getTemperature();
12
}

2

3

4

5

6

7

8

9

10

11

12

(设计原则未完,待续)。
下一篇记录“策略模式”。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通