Head First设计模式读书随笔

一、第九页
找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起。
//面向对象的特点之封装。将不需要变化的代码封装起来。

二、第十一页
针对接口编程【针对超类型(接口+抽象类)编程】,而不是针对实现编程。
依赖于实现的表现:行为来自超类的具体实现,或是继承某个接口并由子类自行实现出来。
//面向对象的特点之多态。声明接口,实现具体类。
//可以实现动态运行。

三、第二十三页
多用组合,少用继承。
使用组合建立的系统具有很大的弹性,不仅可将算法族封装成类,更可以"运行时动态改变行为"。

/*-----------------以上三点原则出自策略模式---------------------*/
策略模式:定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。


四、第七十四页
为交互对象之间的松耦合设计而努力

/*------------------第四条原则出自观察者模式---------------------*/
观察者模式:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。
观察者模式是JDK中使用最多的模式之一


五、第八十六页 开放-关闭原则
类应该对扩展开放,对修改关闭。
不要将设计的每一个部分都具备开放性和关闭性,因为遵循开放-关闭原则,通常会引入新的抽象层次,增加代码的复杂度。我们要把注意力集中在设计中最有可能改变的地方,然后应用开放-关闭原则。

/*------------------第五条原则出自装饰者模式---------------------*/
装饰者模式:动态地将责任附加在对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
感悟:装饰者模式可以很好的实现开放-关闭原则,但是,前提条件是超类中包含继承类的所有方法,即继承类不能定义除超类中方法的任何自定义方法。


/*------------------第六条原则出自工厂方法模式---------------------*/
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类将实例化推迟到了子类。

猜你喜欢

转载自blog.csdn.net/mooncom/article/details/80194966