`
memorymyann
  • 浏览: 266620 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

依赖倒转原则和工厂模式

 
阅读更多

依赖倒转原则讲的是:要依赖于抽象,不要信赖于实现。 这是为实现开闭原则的一种手段。

 

比如之前的代码,我们的主程序中:

Graph g = new xxx();

......

g.getArea();

 

对g的声明则是Graph,而非具体的三角或者原型。我们下面的一切对g的操作,都是依赖Graph,而非对具体的图形的依赖。但只有在初始化g的时候,我们必须制定三角Graph g = new Triangl()或者圆形Graph g = new Circle();这就和依赖倒转原则冲突。由此引入工厂模式。

 

简单工厂模式:

package sty;

public class GraphFactory {

    public static Graph createGraph(String type) {
        Graph g = null;
        if(type.equals("triangle"))
            g = new Triangle();
        if(type.equals("Circle"))
            g = new Circle();
        return g;
    }
}

 

抽象工厂模式,直接从别人哪儿拷贝来的代码

  1. //  产品 Plant接口         
  2. public   interface  Plant {   
  3. }   
  4.   
  5. // 具体产品PlantA,PlantB   
  6. public   class  PlantA  implements  Plant {   
  7.   
  8.      public  PlantA() {   
  9.         System.out.println( " create PlantA ! " );   
  10.     }   
  11.   
  12.      public   void  doSomething() {   
  13.         System.out.println( "  PlantA do something  " );   
  14.     }   
  15. }   
  16.   
  17. public   class  PlantB  implements  Plant {   
  18.      public  PlantB() {   
  19.         System.out.println( " create PlantB ! " );   
  20.     }   
  21.   
  22.      public   void  doSomething() {   
  23.         System.out.println( "  PlantB do something  " );   
  24.     }   
  25. }   
  26.   
  27. // 产品 Fruit接口   
  28. public   interface  Fruit {   
  29. }   
  30.   
  31. // 具体产品FruitA,FruitB   
  32. public   class  FruitA  implements  Fruit {   
  33.      public  FruitA() {   
  34.         System.out.println( " create FruitA ! " );   
  35.     }   
  36.   
  37.      public   void  doSomething() {   
  38.         System.out.println( "  FruitA do something  " );   
  39.     }   
  40. }   
  41.   
  42. public   class  FruitB  implements  Fruit {   
  43.      public  FruitB() {   
  44.         System.out.println( " create FruitB ! " );   
  45.     }   
  46.   
  47.      public   void  doSomething() {   
  48.         System.out.println( "  FruitB do something  " );   
  49.     }   
  50. }   
  51.   
  52. // 抽象工厂方法   
  53. public   interface  AbstractFactory {   
  54.      public  Plant createPlant();   
  55.   
  56.      public  Fruit createFruit();   
  57. }   
  58.   
  59. // 具体工厂方法   
  60. public   class  FactoryA  implements  AbstractFactory {   
  61.      public  Plant createPlant() {   
  62.          return   new  PlantA();   
  63.     }   
  64.   
  65.      public  Fruit createFruit() {   
  66.          return   new  FruitA();   
  67.     }   
  68. }   
  69.   
  70. public   class  FactoryB  implements  AbstractFactory {   
  71.      public  Plant createPlant() {   
  72.          return   new  PlantB();   
  73.     }   
  74.   
  75.      public  Fruit createFruit() {   
  76.          return   new  FruitB();   
  77.     }   
  78. }  

 

 

分享到:
评论

相关推荐

    24种设计模式C#版

    3、依赖倒转原则【DEPENDENCE INVERSION PRINCIPLE】:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程。 4、接口隔离原则...

    24种设计模式介绍与6大设计原则

    3、依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。 4、接口隔离原则(Interface Segregation Principle) 这个原则的意思是:使用...

    Java与模式(清晰书签版) 设计模式 part3

    第1章 模式的简史和形而上学 ...第8章 依赖倒转原则 第9章 接口隔离原则 第10章 合成、聚合复用原则 第11章 迪米特法则 第12章 简单工厂模式 第13章 工厂方法模式 第14章 抽象工厂模式 第15章 单例模式 第16章 .......

    C++设计模式

    依赖倒转原则 7 (三)装饰模式 7 (四)代理模式 9 (五)工厂方法模式 11 (六)原型模式 13 (七)模板方法模式 15 迪米特法则 16 (八)外观模式 16 (九)建造者模式(生成器模式) 19 (十)观察者模式 23 ...

    设计模式PPT.rar

    22第二十二讲备忘录模式 23第二十三讲状态模式 24第二十四讲命令模式 25第二十五讲访问者模式 26第二十六讲开放封闭原则 27第二十七讲单一职责原则 28第二十八讲里氏代换原则 29第二十九讲依赖倒转原则 30第三十讲...

    《设计模式实训教程》【PPT+类图与代码+样章】

    2.1.5依赖倒转原则 2.1.6接口隔离原则 2.1.7合成复用原则 2.1.8迪米特法则 2.2实训实例 2.2.1单一职责原则实例分析 2.2.2开闭原则实例分析 2.2.3里氏代换原则实例分析 2.2.4依赖倒转原则实例分析 2.2.5接口...

    Head First 设计模式 JAVA源码

    所有的设计模式Java实现。 第一讲:简单工厂模式 第二讲:工厂方法模式 第三讲:抽象工厂模式 第四讲:工厂模式在开发中的运用 ...第二十八讲:依赖倒转原则 第二十九讲:迪米特法则 第三十讲:设计模式总结

    Java 设计模式

    3、依赖倒转原则(Dependence Inversion Principle)  这个是开闭原则的基础,对接口编程,依赖于抽象而不依赖于具体。 4、接口隔离原则(Interface Segregation Principle)  使用多个隔离的借口来降低耦合度...

    Java与模式.清晰.rar

    第8章 依赖倒转原则 第9章 接口隔离原则 第10章 合成/聚合复用原则 第11章 迪米特法则 第三部分 第12章 简单工厂模式 第13章 工厂方法模式 第14章 抽象工厂模式 第15章 单例模式 第16章 专题:单例模式与MX记录 第17...

    《Java设计模式(第2版)》

    3、依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,对接口编程,依赖于抽象而不依赖于具体。 4、接口隔离原则(Interface Segregation Principle) 使用多个隔离的借口来降低耦合度。 5...

    设计模式Demo

    3、依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。 4、接口隔离原则(Interface Segregation Principle) 这个原则的意思是:使用...

    尚硅谷设计模式源码笔记课件.zip

    设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种实现)、抽象工厂...

    七种设计模式详解讲解文档-面试必备

    七种设计模式详解讲解文档-面试必备:策略设计模式,单例设计模式,单一职责模式,简单工厂设计模式,开放封闭设计模式,依赖倒转原则,装饰者模式。

    Java设计模式——工厂设计模式

    DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程。 LoD(迪米特法则,Law of Demeter):只与你直接的朋友通信,而避免和陌生人通信。 核心本质: 实例化对象,用工厂方法...

    JAVA与模式

    Java接口 com.javapatterns.liskov 里氏代换原则 com.javapatterns.dip 依赖倒转原则 com.javapatterns.isp 接口隔离原则 com.javapatterns.carp 组合/聚合复用原则 com.javapatterns.lod ...

    抽象工厂模式(Abstract Factory Pattern)

    这就符合了设计模式中的“开放--封闭”原则,依赖倒转原则,里氏代换原则等等。 具体代码如下: 抽象工厂角色: 1namespace AbstractFactory 2{ 3 //抽象工厂类, 4 public abstract class AbstractClothes 5...

    java_模式part2.rar

    Java语言的接口 抽象类 里氏代换原则 依赖倒转原则 接口隔离原则 合成/聚合复用原则 迪米特法则 简单的工厂 工厂的方法 抽象工程 单例(singleton) 原始模型 适配器 装饰 代理 门面模式 不变模式 策略模式 模板方法

    Java模式.part3.rar

    Java语言的接口 抽象类 里氏代换原则 依赖倒转原则 接口隔离原则 合成/聚合复用原则 迪米特法则 简单的工厂 工厂的方法 抽象工程 单例(singleton) 原始模型 适配器 装饰 代理 门面模式 不变模式 策略模式 模板方法

    源码:阎宏设计模式光盘

    com.javapatterns.dip 依赖倒转原则 com.javapatterns.doubledispatch 专题:单分派与多分派 com.javapatterns.facade 门面模式 com.javapatterns.factorymethod 工厂方法模式 com.javapatterns.flyweight 享元...

    设计模式(四)——工厂模式

    工厂模式 意义 工厂模式 实现了创建者和调用者的分离。...DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程(不要让类继承具体类,而是继承抽象类或者是实现 i

Global site tag (gtag.js) - Google Analytics