zoukankan      html  css  js  c++  java
  • 4依赖倒转原则DIP

    一、什么是倒转?

    传统的过程式设计倾向于使高层次的模块依赖于低层次的模块,抽象层依赖 于具体的层次。

    二、什么是依赖倒转原则

      依赖倒转(Dependence Inversion Principle ):

        1.抽象不应该依赖于细节,细节应该依赖于抽 象。

        2.高层模块不依赖底层模块,两者都依赖抽象。

    三、组装电脑

    四、怎样做到依赖倒转

      1.工厂方法模式   

      2.模板方法模式

      3.迭代子模式

     主板  抽象类

    1 /*
    2  * 主板抽象类
    3  */
    4 public abstract class MainBoard {
    5     public abstract void doSomething();
    6 }

    内存  抽象类

    1 /*
    2  * 内存的抽象类
    3  */
    4 public abstract class Memory {
    5     public abstract void doSomething();
    6 }

    硬盘  抽象类

    1 /*
    2  * 硬盘的抽象类
    3  */
    4 public abstract class HardDisk {
    5     public abstract void doSomething();
    6 }

    华硕主板

    1 /*
    2  * 华硕主板
    3  */
    4 public class HuaSuoMainBoard extends MainBoard{
    5 
    6     public void doSomething() {
    7         System.out.println("this is huasuoMainBoard");
    8     }
    9 }

    微星主板

    1 //微星主板
    2 public class WeiXingMainBoard extends MainBoard {
    3 
    4     public void doSomething() {
    5         System.out.println("this is weixingMainBoard");
    6     }
    7 }

    金士顿内存

    1 //金士顿内存
    2 public class JinShiDunMemory extends Memory {
    3 
    4     public void doSomething() {
    5         System.out.println("this is jinshidunMemory");
    6     }
    7 }

    金邦硬盘

    1 //金邦硬盘
    2 public class JinBangMemory extends Memory {
    3 
    4     public void doSomething() {
    5         System.out.println("this is jinbangMemory");
    6     }
    7 }

    西数硬盘

    1 //西数硬盘
    2 public class XiShuHardDisk extends HardDisk {
    3 
    4     public void doSomething() {
    5         System.out.println("this is xishuHardDisk");
    6     }
    7 }

    电脑

     1 /*
     2  * 电脑
     3  */
     4 public class Computer {
     5     private MainBoard mainBoard;
     6     private Memory memory;
     7     private HardDisk harddisk;
     8 
     9     public MainBoard getMainBoard() {
    10         return mainBoard;
    11     }
    12 
    13     public void setMainBoard(MainBoard mainBoard) {
    14         this.mainBoard = mainBoard;
    15     }
    16 
    17     public Memory getMemory() {
    18         return memory;
    19     }
    20 
    21     public void setMemory(Memory memory) {
    22         this.memory = memory;
    23     }
    24 
    25     public HardDisk getHarddisk() {
    26         return harddisk;
    27     }
    28 
    29     public void setHarddisk(HardDisk harddisk) {
    30         this.harddisk = harddisk;
    31     }
    32 
    33     public void display() {
    34         mainBoard.doSomething();
    35         memory.doSomething();
    36         harddisk.doSomething();
    37     }
    38 }

    测试

     1 public class MainClass {
     2     public static void main(String[] args) {
     3         Computer computer = new Computer();
     4         computer.setMainBoard(new HuaSuoMainBoard());
     5         computer.setMemory(new JinShiDunMemory());
     6         computer.setHarddisk(new XiJieHardDisk());
     7         
     8         computer.display();
     9         
    10         System.out.println("-------------");
    11         
    12         computer.setMainBoard(new WeiXingMainBoard());
    13         computer.display();
    14     }
    15 }
  • 相关阅读:
    回到顶部
    angularjs 复选框 单选框
    关于angularjs的ng-repeat指令
    JS字符串对象
    JS的控制语句与异常
    JS的运算符
    JS的引入方式和基础规范
    z-index及透明度opacity,利用overflow设置头像
    css的定位
    css的float属性及清除浮动
  • 原文地址:https://www.cnblogs.com/justdoitba/p/9038209.html
Copyright © 2011-2022 走看看