1.OOP 7大原则
开闭原则:对扩展开放,对修改关闭里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立依赖倒置原则:要面向接口编程,不要面向实现编程单一职责原则:控制类的粒度大小、将对象解耦、提高其内聚性接口隔离原则:要为各个类建立它们需要的专用接口迪米特法则:只与你的直接朋友交谈,不跟“陌生人”说话合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现
2.解析
开闭原则:如果对于已经写好的功能的需求发生了改变,我们尽量不去修改原来的代码,而是在它的基础上进行扩展,且扩展的部分不会对原来的模块的正常工作产生影响【最重要】里氏替换原则:子类可以继承父类的功能,但是尽量不要修改父类原有的功能,就是少覆写父类的功能,多自己实现;这样做是为了保障继承下去的方法还是原父类中的方法;比如B类继承A类,但是B类覆写了A类的a(),C类继承了B类,C类想使用A类的a()方法,但是实际上使用的是B覆写过的a(),这样导致了整个继承体系的可复用性越来越差;巧计:“正方形不是长方形”【不要破坏继承关系】依赖倒置原则:要面向接口编程,因为抽象不依赖于细节,而细节依赖于抽象,降低程序之间的耦合性【要面向接口编程】单一 职责/功能 原则:控制类的粒度大小就是说这个类不应该承担太多的职责/完成太多的功能,一个类包含的功能太多,我们就称它的粒度太大;粒度太大的后果就是这个类的复杂性高(包含多个功能)、可读性底(类的作用不专注)、 可维护性差(类中涉及到的功能太多太杂)、变更引起的风险降高(类中一种功能可能调用了另一种功能,一个功能的修改可能导致其他功能不可用)等缺点;注意:单一职责说的是这个类完成一种功能,不是一个类只写一个方法【设计类的时候要保障类的功能单一】接口隔离原则:要为各个类建立它们需要的专用接口,目的就是为了提供类的内聚性、,降低类之间的耦合性;注意区分它和单一 职责/功能 原则,单一职责原则注重一类的内部的功能单一,接口隔离原则注重各个类之间接口的隔离,从接口处/类设计 处就将类之间的关系切断【设计接口的时候要保障接口之间的独立性,精简单一的专业接口】迪米特法则:A类有一个成员对象B,B类有一个成员变量C,我们有需求要在A类中传数据到C类中的方法中执行,按照迪米特法则,我们不应该直接new一个C类,而是调用原来本来就有的B类,通过B.C.方法名称()将参数传递过去执行,这就是不要和陌生人说话(new一个全新的对象),这也是为了降低类之间的耦合性,提供类本身的独立性;弊端:产生了很多中阶类,即本来可以直接new C对象的,我们需要通过B类去调用,B类就是中介类【降低程序之间的耦合度】合成复用原则:即在建立类与类之间的关系的时候,我们应该先考虑将要建立的类作为当前这个类的成员变量(has a),其次才考虑通过继承(is a)使得两个类产生关系;使用继承的时候我们还要保障"里氏替换原则",即保障子类尽量少或者不覆写父类的方法【优先使用组合/聚合,少使用继承】
转载请注明原文地址:https://blackberry.8miu.com/read-33625.html