本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020
在看设计模式的基本原则之前,先来看下一些基本的面向对象知识。
面向的对象的三原则,即继承,封装和多态,那么这些又是如何定义,又如何区分呢?
封装 : 隐藏实现的一些细节,提供一种公开的访问方式。
eg. private可以把一些成员变量和成员方法给隐藏起来。
继承 : 可以具备某些已经存在的功能。
多态 : 对象在不同时刻体现不同的优势。
eg. List list = new ArrayList();
list = new LinkedList();
抽象类 : 是对一组具有相同的属性和方法的在逻辑上有关系的一种抽象。
is a的关系。
接口 : 对一组具有相同的属性和方法的在逻辑上不相关的一种抽象。
like a的关系。
开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码。
系统中的第一个对象应该只有一个单独的职责,所有对象关注的应该是自身职责的完成。
基本思想:高内聚,低耦合。
一个对象的扩展开放,对修改关闭。
基本思想:对类的改动是通过增加代码进行的,而不是修改现有的代码。
在任意父类出现的地方,都可以使用子类来代替。
要依赖于抽象,不要依赖于具体的实现。
基本思想:在开发中尽量的面向接口编程。
不要去使用一些不需要使用的功能。
基本思想:一个接口不要提供太多的行为。
一个对象对其他的对象应该尽可能少的了解。
基本思想:降低耦合。
优先使用组合而不是继承原则,即尽量首先使用合成/聚合的方式,而不是使用继承。
基本思想:在利用对象的最低点,要优先考虑组合,而不是继承,因为父类的任何改变都可能直接影响子类的行为。
eg. 把大象装进装箱:
继承实现:
class A{方法(){"打开冰箱"}}
class B extends A{方法(){"装进大象"}}
class C extends B{方法(){"关闭冰箱"}}
组合实现:
class Demo{
new A().方法();
new B().方法();
new C().方法();
}
以上就是设计模式的基本原则,看起来好象很简单,但在实际应用的过程中还是会遇到不少的问题,在此记录下,以督促自己在以后的软件开发中尽量应用设计模式,从而更加深刻的理解。以上笔记,是我自己在听"51cto"设计模式一视频中所做的,后面有可能会继续做。
原文地址:http://blog.csdn.net/jesson20121020/article/details/41410793