Head First设计模式一开始为我们介绍了一个案例:设计鸭子问题。
这是书中的思路:仔细思考,这极其可能是我们解决问题是,作为新手所采用的思路。
它这里提出:
设计原则一:把尽可能的所有的要变化的东西封装在一起,不变化的封装一起。
它主要的思路是:把需要变化的东西,拿出来进行变化,不需要的稳定分开,不会影响以后的维护。这是所有设计模式的精神所在。
继续看鸭子问题,以这个思路继续!
这里引入一个新的原则:
设计原则二:针对接口编程,不是针对实现编程。
这个原则的思想是弹性,不能是为了实现而去实现,这也是我们新手编程当中的遇到的问题,类似很多边界值,临界条件,代码的灵活性都是编程良好的习惯,考虑全面,动态实现。
接口编程 == 多态
针对接口编程,又称为针对超类编程,其实就是每个接口就是一个类,那么每个类之间就会有一种关系,彼此的使用,主要两个使用——组合、继承。
这里便有一个设计原则,你也一定听过的:
多用组合,少用继承。
代码示例:(此部分来源)
class Computer
{
Memory mMem;
Disk mdisk;
CPU mcpu;
MainBoard mmainboard;
public:
Computer()
{
cout << "Computer()" << endl;
}
~Computer()
{
cout << "~Computer()" << endl;
}
};
输入 computer c: 就会自动调用Memory Disk CPU MainBoard 等类的基类;