看了一下《针对Java程序员的UML概述》,突然发现一章讲编程需要注意的原则,列了出来五个原则。<o:p></o:p>
单一职责原则:一个类应当只有一个改变的原则。这个是初学者很容易犯的毛病,把一个类中放了N多的方法,也是面向过程遗留下来的毛病,对一开始实现时候是比较爽,所有的逻辑都放在一个类中,比较明了。但是到后来就越来越难查看,简直到崩溃的边缘。<o:p></o:p>
开放封闭原则:软件实体(类、模块、函数等)应当为扩展而开放,又为修改而封闭。这个原则有一个相当详细的定义,但是一个简单的意思是:你应当能够改变一个模块的 周边环境而无须改变模块本身。这块关键是使用抽象,比如dao模式,不能因为数据存取方式的改变而要改变调用者的代码。在文中举了一个MVC的例子,比较经典,可以好好的琢磨一下。<o:p></o:p>
Liskov替换原则:子类型必须为他们的基类型可替换的。这个原则主要讲述了调用者调用一个基类的派生类时无需知道它们的存在,尽量少用instanceof,让设计的时候充分考虑到基类和派生类的继承关系。继承是isA的关系,所以父类的行为子类也必须有之,反之不应当继承,或者可能是兄弟关系,继承同一个祖先类<o:p></o:p>
依存关系倒置原则:A.高层模块应当不依赖低层模块,它们应当依赖于抽象。 B.抽象应当不依赖于细节,细节应当依赖于抽象。 更好的描述是:不要依赖那些容易变化的具体类。<o:p></o:p>
接口隔离原则:客户不应当依赖那些它们根本不用的方法。这个原则说明调用者调用业务类,最好是能给调用者展现他能用到的方法,而不是把所有的方法都是显示,这样会造成调用者的迷惑。<o:p></o:p>
在文中面向接口的思想是特别推崇的,基本所有改进都是建立在其基础上的,还有一点充满了XP的气息,看了参考文献很多都是有关XP的书籍。<o:p></o:p>