<<设计模式之禅(第二版)>>——第三章
作者:
leiiiooo | 来源:发表于
2016-10-10 12:36 被阅读18次定义:
- 模块之间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类产生的
- 接口或抽象类不依赖于实现类
- 实现类依赖接口或者抽象类
- 面向接口编程
实例:
![](https://img.haomeiwen.com/i1638747/62ca9af4cca76469.png)
简单实例
code
public class Client {
public static void main(String[] args) {
IDriver zhangsan = new Driver();
ICar car = new Car();
zhangsan.drive(car);
}
}
public interface ICar {
public void run();
}
public interface IDriver {
public void drive(ICar car);
}
public class Driver implements IDriver {
@Override
public void drive(ICar car) {
// TODO Auto-generated method stub
System.out.println("实体司机,开车");
car.run();
}
}
public class Car implements ICar {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("实体汽车类,run");
}
}
result:
实体司机,开车
实体汽车类,run
ps:案例中的zhangsan 表面类型是IDriver,实际类型是Driver
依赖的三种写法:
- 构造函数注入,构造函数传递以来对象。(指的是实现接口的实体类中的构造函数的前置参数为另一个接口)
- Setter方法传递以来对象
- 接口声明依赖对象(接口注入)
实践原则:
- 每个类尽量都有接口和抽象类,或者抽象类和接口两者都具备
- 变量的表面类型尽量使接口或者是抽象类
- 任何类都不应该从具体类中派生
- 尽量不要覆写基类的方法
- 结合里氏替换原则使用(接口负责定义public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑,同时在适当的时候对父类进行细化。)
本文标题:<<设计模式之禅(第二版)>>——第三章
本文链接:https://www.haomeiwen.com/subject/synmyttx.html
网友评论