读书人

面向对象的设计准则_依赖倒转原则

发布时间: 2012-11-03 10:57:42 作者: rapoo

面向对象的设计原则_依赖倒转原则
?面向对象的设计准则_依赖倒转原则面向对象的设计准则_依赖倒转原则

    //Dependency Inversion Principle - Bad exampleclass Worker {public void work() {// ....working}}class Manager {Worker m_worker;public void setWorker(Worker w) {m_worker=w;}public void manage() {m_worker.work();}}class SuperWorker {public void work() {//.... working much more}}

    ?

    ?

    下面是支持依赖倒转原则的代码。在这个新的设计中,我们增加了一个新的抽象层IWork接口。现在,上面的问题得到了解决:

    不需要修改Manager类。 使对Manager类现有功能的影响最小化。 不需要对Manager类重新进行单元测试。 ?面向对象的设计准则_依赖倒转原则面向对象的设计准则_依赖倒转原则
      //Dependency Inversion Principle - Good exampleinterface IWorker {public void work();}class Worker implements IWorker{public void work() {// ....working}}class SuperWorker implements IWorker{public void work() {//.... working much more}}class Manager {IWorker m_worker;public void setWorker(IWorker w) {m_worker=w;}public void manage() {m_worker.work();}}

      ?

      ?

      总结

      应用该原则意味着上层类不直接使用底层类,他们使用接口作为抽象层。这种情况下上层类中创建底层类的对象的代码不能直接使用new操作符。可以使用一些创建型设计模式,例如工厂方法,抽象工厂和原型模式。

      模版设计模式是应用依赖倒转原则的一个例子。

      当然,使用该模式需要额外的努力和更复杂的代码,不过可以带来更灵活的设计。不应该随意使用该原则,如果我们有一个类的功能很有可能在将来不会改变,那么我们就不需要使用该原则。

读书人网 >编程

热点推荐