面向对象设计原则 。 编程时基本要遵守,高内聚低耦合。
单一职责原则 。一个类,只敢一件事。例如,程序员写代码、歌手唱歌、球员打球。类具象化了,一旦需要哪个方法,就可以知道从哪个类调用了。
开闭原则 。 开:提供方提供 抽象类/接口/方法 等,实现类可以决定行为。闭:调用方调用时,尽量不需要修改代码 。
依赖倒置原则 。 高层模块不依赖底层实现,均依赖抽象。 传统的方法中,没有接口,而是依赖类与类之间的对象创建。一旦需求编号,类就需要重写,这样其他类也需要修改。
里氏替换原则 。 子类可以替换父类的功能,但不能覆盖父类的抽象方法。
public abstract class Coder {
public abstract void eat(); //这个行为还是定义出来,但是不实现
public void coding() { // 父类方法,不能被子类重载。
System.out.println("我会打代码");
}
class JavaCoder extends Coder{
public void game(){ //子类自己的额外的方法
System.out.println("艾欧尼亚最强王者已上号");
}
public void eat(){ //子类实现父类的抽象方法(必须)
System.out.println("干啥啥不行,干饭第一名!")
}
}
}
接口隔离原则 。 对接口进行细分,避免接口中定义的方法,在实现类中用不上。
合成复用原则。 优先使用对象组合,而不是通过集成达到复用的目的。
class A {
public void connectDatabase(){
System.out.println("我是连接数据库操作!");
}
}
class B {
A a;
public B(A a){ //在构造时就指定好
this.a = a;
}
public void test(){
System.out.println("我是B的方法,我也需要连接数据库!");
a.connectDatabase(); //也是通过对象A去执行
}
}
迪米特法原则(最小知识原则)。一个类/模块,对其他模块有越少的交互越好。