面向对象的设计原则
1.单一职责原则:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因只有一个。这样就可以避免类庞大无比,南与维护。
2.开闭原则:即一个对象对扩展开发,对修改关闭。就是说类的改动是通过增加代码进行的,而不是改动现有的代码。
3.依赖注入原则:要依赖于抽象,而不是依赖于具体的实现。所有的类如果需求调用其它的类,就应该调用该类的接口或者抽象类,而不是直接调用该类的实现类。这个原则在spring中得到了充分的利用,这样才能保证spring的灵活性,因此在采用spring开发代码时,要针对接口编程,而不是针对实现编程。
4.里氏代换原则:在任何抽象类出现的地方都可以用它的实现类来代替。采用里氏代换原则可以更好地使用继承。
5.迪米特原则:一个对象应当对其他对象尽可能的少的了解,从而能够降低哥哥对象之间的耦合,提高系统的可维护性。
6.接口分离原则:不应该强迫用户程序依赖它们不需要使用的方法。在软件开发中,开发人员经常会将很多对外提供的方法封装到一个类中实现,然后提供给其他模块使用,这就违反了接口分离原则,一个接口应该只提供一种对外功能,不应该把所有操作都封装到一个接口当中。
7.优先使用组合而不是继承原则:因为父类与子类的依赖关系,可能到时当用户需求发生变化时,父类发生变化导致所有的子类也要做相应的改变,
小结:以上原则都是围绕着一个核心思想,就是尽量降低程序代码直接的依赖,这也是“高内聚,低耦合”的思想的具体体现。
设计模式的产生和分类
23种设计模式。
这些设计模式分别从对象的创建、对象的结构和对象的行为3个方面来总结软件开发人员在程序设计方面的经验。
设计模式学习线路
需要对接口和抽象类有一定的了解;
1.接口的定义如下:
public interface Test{
public void do(); //只能定义抽象的方法
}
在接口内只能定义抽象方法,意味着这个接口是要被用来实现的,因此在接口中,所有的属性都肯定是public static final,所有的方法都是abstract
2.抽象类的定义如下:
public abstract class Test{
public abstract void do(); //定义抽象方法
public void doTest(){ //也可以定义具体实现方法
......
}
}
它们的派生类的定义也是不一样的,一个用标示符implements一个用extends。而且接口的派生类可以实现多个接口,而抽象类的接口只能实现一个抽象类。