日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件设计原则——依赖倒转原则

發(fā)布時(shí)間:2025/4/16 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件设计原则——依赖倒转原则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

依賴倒轉(zhuǎn)原則

高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴其抽象;

抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象。

簡單的說就是要求對(duì)抽象進(jìn)行編程,不要對(duì)實(shí)現(xiàn)進(jìn)行編程,

這樣就降低了客戶與實(shí)現(xiàn)模塊間的耦合。



【例】組裝電腦

現(xiàn)要組裝一臺(tái)電腦,需要配件cpu,硬盤,內(nèi)存條。只有這些配置都有了,計(jì)算機(jī)才能正常的運(yùn)行。

選擇cpu有很多選擇,如Intel,AMD等,硬盤可以選擇希捷,西數(shù)等,內(nèi)存條可以選擇金士頓,海盜船等。





IntelCpu.java

package com.itheima.principles.demo3.before;/*** @version v1.0* @ClassName: IntelCpu* @Description: Intel cpu* @Author: dym*/ public class IntelCpu {public void run() {System.out.println("使用Intel處理器");} }

KingstonMemory.java

package com.itheima.principles.demo3.before;/*** @version v1.0* @ClassName: KingstonMemory* @Description: 金士頓內(nèi)存條類* @Author: dym*/ public class KingstonMemory {public void save() {System.out.println("使用金士頓內(nèi)存條");} }

XiJieHardDisk.java

package com.itheima.principles.demo3.before;/*** @version v1.0* @ClassName: XiJieHardDisk* @Description: 希捷硬盤* @Author: dym*/ public class XiJieHardDisk {//存儲(chǔ)數(shù)據(jù)的方法public void save(String data) {System.out.println("使用希捷硬盤存儲(chǔ)數(shù)據(jù)為:" + data);}//獲取數(shù)據(jù)的方法public String get() {System.out.println("使用希捷希捷硬盤取數(shù)據(jù)");return "數(shù)據(jù)";} }

Computer.java

package com.itheima.principles.demo3.before;/*** @version v1.0* @ClassName: Computer* @Description: TODO(一句話描述該類的功能)* @Author: dym*/ public class Computer {private XiJieHardDisk hardDisk;private IntelCpu cpu;private KingstonMemory memory;public XiJieHardDisk getHardDisk() {return hardDisk;}public void setHardDisk(XiJieHardDisk hardDisk) {this.hardDisk = hardDisk;}public IntelCpu getCpu() {return cpu;}public void setCpu(IntelCpu cpu) {this.cpu = cpu;}public KingstonMemory getMemory() {return memory;}public void setMemory(KingstonMemory memory) {this.memory = memory;}public void run() {System.out.println("運(yùn)行計(jì)算機(jī)");String data = hardDisk.get();System.out.println("從硬盤上獲取的數(shù)據(jù)是:" + data);cpu.run();memory.save();} }

ComputerDemo.java

package com.itheima.principles.demo3.before;/*** @version v1.0* @ClassName: ComputerDemo* @Description: TODO(一句話描述該類的功能)* @Author: dym*/ public class ComputerDemo {public static void main(String[] args) {//創(chuàng)建組件對(duì)象XiJieHardDisk hardDisk = new XiJieHardDisk();IntelCpu cpu = new IntelCpu();KingstonMemory memory = new KingstonMemory();//創(chuàng)建計(jì)算機(jī)對(duì)象Computer c = new Computer();//組裝計(jì)算機(jī)c.setCpu(cpu);c.setHardDisk(hardDisk);c.setMemory(memory);//運(yùn)行計(jì)算機(jī)c.run();} }



上面代碼可以看到已經(jīng)組裝了一臺(tái)電腦,但是似乎組裝的電腦的cpu只能是Intel的,內(nèi)存條只能是金士頓的,硬盤只能是希捷的,

這對(duì)用戶肯定是不友好的,用戶有了機(jī)箱肯定是想按照自己的喜好,選擇自己喜歡的配件。

根據(jù)依賴倒轉(zhuǎn)原則進(jìn)行改進(jìn):

代碼我們只需要修改Computer類,讓Computer類依賴抽象(各個(gè)配件的接口),而不是依賴于各個(gè)組件具體的實(shí)現(xiàn)類

Cpu.java

package com.itheima.principles.demo3.after;/*** @version v1.0* @ClassName: Cpu* @Description: cpu接口* @Author: dym*/ public interface Cpu {//運(yùn)行cpupublic void run(); }

IntelCpu.java

package com.itheima.principles.demo3.after;/*** @version v1.0* @ClassName: IntelCpu* @Description: Intel cpu* @Author: dym*/ public class IntelCpu implements Cpu {public void run() {System.out.println("使用Intel處理器");} }

HardDisk.java

package com.itheima.principles.demo3.after;/*** @version v1.0* @ClassName: HardDisk* @Description: 硬盤接口* @Author: dym*/ public interface HardDisk {//存儲(chǔ)數(shù)據(jù)public void save(String data);//獲取數(shù)據(jù)public String get(); }

XiJieHardDisk.java

package com.itheima.principles.demo3.after;/*** @version v1.0* @ClassName: XiJieHardDisk* @Description: 希捷硬盤* @Author: dym*/ public class XiJieHardDisk implements HardDisk {//存儲(chǔ)數(shù)據(jù)的方法public void save(String data) {System.out.println("使用希捷硬盤存儲(chǔ)數(shù)據(jù)為:" + data);}//獲取數(shù)據(jù)的方法public String get() {System.out.println("使用希捷希捷硬盤取數(shù)據(jù)");return "數(shù)據(jù)";} }

Memory.java

package com.itheima.principles.demo3.after;/*** @version v1.0* @ClassName: Memory* @Description: 內(nèi)存條接口* @Author: dym*/ public interface Memory {public void save(); }

KingstonMemory.java

package com.itheima.principles.demo3.after;/*** @version v1.0* @ClassName: KingstonMemory* @Description: 金士頓內(nèi)存條類* @Author: dym*/ public class KingstonMemory implements Memory {public void save() {System.out.println("使用金士頓內(nèi)存條");} }

Computer.java

package com.itheima.principles.demo3.after;/*** @version v1.0* @ClassName: Computer* @Description: TODO(一句話描述該類的功能)* @Author: dym*/ public class Computer {private HardDisk hardDisk;private Cpu cpu;private Memory memory;public HardDisk getHardDisk() {return hardDisk;}public void setHardDisk(HardDisk hardDisk) {this.hardDisk = hardDisk;}public Cpu getCpu() {return cpu;}public void setCpu(Cpu cpu) {this.cpu = cpu;}public Memory getMemory() {return memory;}public void setMemory(Memory memory) {this.memory = memory;}//運(yùn)行計(jì)算機(jī)public void run() {System.out.println("運(yùn)行計(jì)算機(jī)");String data = hardDisk.get();System.out.println("從硬盤上獲取的數(shù)據(jù)是:" + data);cpu.run();memory.save();} }

ComputerDemo.java

package com.itheima.principles.demo3.after;/*** @version v1.0* @ClassName: ComputerDemo* @Description: TODO(一句話描述該類的功能)* @Author: dym*/ public class ComputerDemo {public static void main(String[] args) {//創(chuàng)建計(jì)算機(jī)的組件對(duì)象HardDisk hardDisk = new XiJieHardDisk();Cpu cpu = new IntelCpu();Memory memory = new KingstonMemory();//創(chuàng)建計(jì)算機(jī)對(duì)象Computer c = new Computer();//組裝計(jì)算機(jī)c.setCpu(cpu);c.setHardDisk(hardDisk);c.setMemory(memory);//運(yùn)行計(jì)算機(jī)c.run();} }

?

總結(jié)

以上是生活随笔為你收集整理的软件设计原则——依赖倒转原则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色哟哟视频在线 | 色呦呦视频| 久草免费资源站 | 成人h动漫精品一区二 | 91精品人妻一区二区三区 | 欧美一级片在线看 | 亚洲欧美在线一区 | 日韩精品一区二区av | 四虎在线免费视频 | 亚洲少妇一区二区三区 | 女生高潮视频在线观看 | www..com色 | 国产欧美日韩视频在线观看 | 第一av在线 | 精品国产一区二区三区久久久久久 | 美国黄色片网站 | 日本精品影院 | 在线观看亚洲欧美 | 久久伊人爱 | 少妇被躁爽到高潮 | 成年免费视频黄网站在线观看 | 久久久久久久久久久久久久国产 | 国产乱淫视频 | 亚州欧美日韩 | 国产精品国产三级国产aⅴ下载 | 婷婷色视频 | xxxxⅹxxxhd日本8hd| 色香蕉av| 久久9热 | 双腿张开被9个男人调教 | av地址在线观看 | 国产精品久久999 | 无码人妻一区二区三区免费n鬼沢 | 蜜桃传媒一区二区亚洲 | 成人高潮片 | 男生操女生动漫 | 男生操女生在线观看 | 好妞色妞国产在线视频 | 亚洲成人免费在线 | 亚洲高清在线一区 | 黄色一级免费大片 | 成人tiktok黄短视频 | 天天草影院 | 精品福利一区二区三区 | av福利站 | 麻豆精品在线观看 | 国产精品毛片一区二区在线看 | 伊伊总综合网 | 国产一二三在线视频 | 久久免费在线观看 | www.精品| 91精彩刺激对白 | 日韩视频 中文字幕 | 日韩有码在线播放 | 后入内射欧美99二区视频 | 午夜精品福利电影 | 99久久精品国产亚洲 | 天堂中文在线最新 | 亚洲欧美色视频 | 高清乱码免费看污 | 欧美三级成人 | 粗大挺进潘金莲身体在线播放 | 91吃瓜今日吃瓜入口 | 国产无限制自拍 | 中文字幕av一区二区三区 | 福利视频黄色 | 午夜影院一区 | 国产成人啪精品 | 豆花视频成人 | 牛牛影视免费观看 | 蝌蚪av | 魔性诱惑 | 欧美国产日韩一区二区 | 美女张开双腿让男人捅 | 男人插女人免费视频 | 草草影院国产 | 久草视频国产 | 亚洲成人av免费观看 | 国产成人精品一区二区三区网站观看 | 精品国产色 | xxxx在线视频 | 超碰人人艹 | 亚洲码中文 | 91视频 - 88av| 一区二区不卡 | 在线观看黄色大片 | 色人阁视频 | 好紧好爽再浪一点视频 | 一本一本久久a久久精品综合麻豆 | 国产伦理在线 | 亚洲一区中文字幕在线观看 | 精品黄色av| 日韩免| www啪啪| 成人深夜视频 | h在线观看视频 | 秋霞在线观看秋 | 综合中文字幕 | 国产性一乱一性一伧一色 |