面向对象设计原则六 - 针对接口编程,而不是针对实现编程
2015-02-11 22:30
537 查看
http://zjliu.iteye.com/blog/423222
接口
接口是一个对象中可以被另一个对象调用的一组方法
一个对象可以有多个接口
类型是一个对象的特殊接口
不同的对象可以有相同的类型,一个对象可以有多种不同的类型
一个对象只有通过它的接口才能被其他对象知晓
接口是可插拔的关键
实现继承和接口继承
实现继承(类继承)------ 一个对象的实现定义在另一个对象的实现的基础上
接口继承 ------ 描述了一个对象什么时候可以代替另一个对象使用
Java为接口继承提供了专用的结构 - interface
Java的接口结构使专注于对象接口的设计更容易实现
接口的优缺点
优点
客户端不知道他们所使用对象的具体类型
一个对象可以被另一个对象轻易地替换
对象不需要硬连接到一个特殊类的对象,因此增加了灵活性
松耦合
增加了重用的机会
增加了组合的机会,因为被包含的对象可以被实现了特定接口的其他对象替换
缺点
某种程度上增加了设计的复杂性
接口实例
/**
* Interface IManeuverable provides the specification
* for a maneuverable vehicle.
*/
public interface IManeuverable {
public void left();
public void right();
public void forward();
public void reverse();
public void climb();
public void dive();
public void setSpeed(double speed);
public double getSpeed();
}
public class Car implements IManeuverable {
// Code here.
}
public class Boat implements IManeuverable {
// Code here.
}
public class Submarine implements IManeuverable {
// Code here.
}下面的方法只需要知道参数是机动车辆而不需要关心它到底属于哪个类(Car, Boat, Submarine)或者类所在的层次结构。
使用该原则可以带来更灵活的设计,因为当我们想替换一个类的实现时,不需要改变原来的代码。
接口
接口是一个对象中可以被另一个对象调用的一组方法
一个对象可以有多个接口
类型是一个对象的特殊接口
不同的对象可以有相同的类型,一个对象可以有多种不同的类型
一个对象只有通过它的接口才能被其他对象知晓
接口是可插拔的关键
实现继承和接口继承
实现继承(类继承)------ 一个对象的实现定义在另一个对象的实现的基础上
接口继承 ------ 描述了一个对象什么时候可以代替另一个对象使用
Java为接口继承提供了专用的结构 - interface
Java的接口结构使专注于对象接口的设计更容易实现
接口的优缺点
优点
客户端不知道他们所使用对象的具体类型
一个对象可以被另一个对象轻易地替换
对象不需要硬连接到一个特殊类的对象,因此增加了灵活性
松耦合
增加了重用的机会
增加了组合的机会,因为被包含的对象可以被实现了特定接口的其他对象替换
缺点
某种程度上增加了设计的复杂性
接口实例
/**
* Interface IManeuverable provides the specification
* for a maneuverable vehicle.
*/
public interface IManeuverable {
public void left();
public void right();
public void forward();
public void reverse();
public void climb();
public void dive();
public void setSpeed(double speed);
public double getSpeed();
}
public class Car implements IManeuverable {
// Code here.
}
public class Boat implements IManeuverable {
// Code here.
}
public class Submarine implements IManeuverable {
// Code here.
}下面的方法只需要知道参数是机动车辆而不需要关心它到底属于哪个类(Car, Boat, Submarine)或者类所在的层次结构。
public void travel(IManeuverable vehicle) { vehicle.setSpeed(35.0); vehicle.forward(); vehicle.left(); vehicle.climb(); }总结:
使用该原则可以带来更灵活的设计,因为当我们想替换一个类的实现时,不需要改变原来的代码。
相关文章推荐
- 面向对象设计原则六 - 针对接口编程,而不是针对实现编程
- 面向对象设计原则六 - 针对接口编程,而不是针对实现编程
- 面向对象设计原则六 - 针对接口编程,而不是针对实现编程
- 面向对象设计三大原则(封装变化点,对接口进行编程,多使用组合而不是继承)
- 0.2-设计模式怎么样解决设计问题-针对接口编程,而不是针对实现编程
- 《Android之大话设计模式》设计原则 第一章:针对接口编程 不要针对实现编程
- 设计原则 —— 针对接口编程而不针对实现编程
- 面向对象设计的原则------接口隔离原则
- 应该针对接口编程 而不是针对实现编程
- 面向对象设计原则-接口隔离原则
- 从头认识设计模式-策略模式-05-引入设计原则:面向接口编程
- 设计原则:面向接口编程
- Android中设计模式--策略模式(封装会变化的算法部分,面向接口不针对实现)
- 面向对象的设计原则三 - 接口隔离原则
- 面向对象设计原则之接口隔离原则
- 面向对象设计原则---接口隔离原则
- 面向接口设计和编程——(面向对象、面向接口、面向过程、面向实现) --转载
- 面向对象的设计法则(2)——针对接口编程,而非(接口的)实现
- Java设计第一原则:面向接口编程
- ZT 针对接口编程而不是针对实现编程