该念:
(1)、依赖关系
(2)、关联关系(依赖关系的特例之一)
(3)、聚合关系(可以分开)
(4)、组合关系(不可分开)
一、单一职责原则
一个类负责一个职责。
一个方法负责一个职责。
二、接口隔离原则(拆分接口实现有效依赖避免冗杂不需要的方法)
三、依赖倒置原则(提高可扩展性)
(1)、接口方式(想扩展时实现这个接口和里面的抽象方法)
实现方式:传统方法是依赖形参是具体方法,二依赖倒置依赖的是接口或抽象类。
扩展特性:这个时候,想扩展另一个功能就可以实现这个接口,并将这个扩展类的对象传入Person这个类的方法即可调用扩展类的实现了接口的方法。
依赖关系传递的三种方式和应用案例
(1)、接口传递
(2)、构造传递
(3)、setter传递
总结:三者共性都是以接口为形参,只是形参出现的位置不同。接口方式的形参(接口类型且是接口实现类的实例)是出现在方法里;构造方式的形参(接口类型且是接口实现类的实例)是出现在对象里;setter方式的形参(接口类型且是接口实现类的实例)出现在set方法上。接口方式在外部灵活调用实现类的各种方法;构造方式和set方式在内部调用,并提供相应的方法对外公开实现类的方法。
即只需要创建OpenAndClose有参对象并将实现ITV接口的类对象传进去即可,并通过有参对象调用里面的open方法即可调用具体实现类(扩展类)的play方法。
即创建实例,调用set方法并将ITV接口的实现类的实例传进去,调用open方法即可实现实现类(扩展类)方法的调用。
(2)、抽象类方式(想扩展时继承抽象类并重写抽象方法)
共性:接口和抽象类在修改上一层的方法后实现扩展,利用一个管理方法的专门接收接口或抽象类的形参,此时调用这个对象的这个管理方法并将对应扩展类的对象传进去最终实现对应扩展类方法的调用。
四、里氏替换原则(采用依赖、组合、聚合的方式替代继承,因为继承体系复用性差)
传统写法:
里氏替换:
即A、B类不再是继承关系,被解耦成共同继承基类Base;这样A、B是独立的两部分,不会担心同样的方法被子类重写的问题,从而解决了明确调用方法的问题。
五、开闭原则(对上面依赖倒置的运用实现扩展)
开放扩展,关闭修改。
六、迪米特法则(将别人的类的东西放到别人的类里面去处理,提供public方法即可)
目的:降低类与类的耦合,减少类与类的依赖。
别称:最小知道原则,即一个类对自己依赖的类知道得越少越好。