引入
面向对象的设计原则只是在许多设计中总结出的指导性原则,并不是任何设计都必须遵守的规定,实际编程过程中不要教条化了~!
面向抽象原则
面向抽象编程和面向接口编程两者相似,但又不同
所谓面向抽象编程,是指设计一个类时,不让该类面向具体丁磊,而是面向抽象类或接口,即所设计类中的重要数据是抽象类或接口声明的变量,而不是具体类声明的变量.
首先理解抽象和接口的区别
抽象类具有以下特点:
- 抽象类中可以又abstract方法,也可以有非abstract方法
- 抽象类不能用new运算发创建实例
- 如果一个非抽象类是某个抽象类的子类,它必须重写父类的abstract方法(即必须具体实现抽象方法)
接口具有以下特点: - 接口中只可以有public权限的abstract方法,不能有非abstract方法(即不能有具体方法)
- 接口由类实现
- 接口回调(可以把实现接口的类的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法)
开闭原则
让设计对扩展开放,对修改关闭.
本质上就是在设计中增加新的模块时,不需要修改现有的模块
多用组合少用继承原则
这个是因为继承的概念刚出的时候被吹的太高导致的软件设计中全部用的继承,用的太多了容易导致模块之间耦合度过高的问题,导致不便于扩展.(举一个例子,你的所有具体产品全部都继承于一个父类(产品线),业务发展到了要更换产品线的程度,要你改父类怎么办。软件就崩了啊~所有的子类都得改)
而使用组合,即时一个模块崩了,也不会影响到其他模块的运行,这就很便于后续维护和扩展开发。
高内聚-低耦合原则
和上面的原则一致,都是为了方便维护,一个程序崩了还有千千万万个程序站起来。
单一职责原则
就一个类而言,应该仅有一个引起它变化的原因,一个类最好只处理一个功能。
不要把所有功能都写在一起,玩游戏的时候一个地方的bug不会影响整个软件系统,不要觉得大而全就是好,崩起来是山洪式了,找都找不到问题的原因。