面向对象设计的好处:可维护、可扩展、可复用、灵活性好。
1、单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。
2、开放-封闭原则:是说软件实体(类、模块、函数等) 对扩展开放、对修改封闭。此为面向对象设计的核心所在。
面对需求变动时,可以保持相对稳定,从而不断推出新的版本。
3、依赖倒置原则:抽象不应该依赖细节,细节应该依赖抽象。
说白了,就是 针对接口编程,不要针对实现编程。
高层模块(应用层) 与 低层模块(如数据访问层)之间依靠接口连接,而非强关联。
4、里氏替换原则:子类 必须能够替换掉 它们的父类。
说白了,就是父类定义的行为和属性,子类必须具备。
例如 定义了个 鸟作为父类,鸟具有 飞行行为。企鹅、鸵鸟虽为鸟,但不能继承,因为它们不能飞,不能替换掉它们的父类。
5、迪米特法则:如果两个类不必批次直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的的某一个方方的话,可以通过第三者转发这个调用。
6、合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用继承。
好处:1、对象的继承关系,在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,所以
a. 父类实现中的任何变化,都会导致子类发生变化。
b.当复用子类时,若继承下来的子类不太适合解决新的问题,则父类必须重写。
因此继承方式,限制了灵活性,限制了复用。
2、合成/聚合方式,将有助于保持每个类被封装,并集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。