<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
package com.szh.principle.inversion; /** * */ class Email { public String getInfo() { return "電子郵件資訊: hello,world"; } } // 完成Person接收訊息的功能 // 方式1分析 // 1. 簡單,比較容易想到 // 2. 如果我們獲取的物件是 微信,簡訊等等,則新增類,同時Person也要增加相應的接收方法 // 3. 解決思路:引入一個抽象的介面IReceiver, 表示接收者, 這樣Person類與介面IReceiver發生依賴 // 因為Email, WeiXin 等等屬於接收的範圍,他們各自實現IReceiver 介面就ok, 這樣我們就符號依賴倒轉原則 class Person { public void receive(Email email ) { System.out.println(email.getInfo()); } } public class DependencyInversion { public static void main(String[] args) { Person person = new Person(); person.receive(new Email()); } }
我們可以根據依賴倒轉原則對上面的程式碼做一個改進,如下:
package com.szh.principle.inversion.improve; /** * */ //定義介面 interface IReceiver { public String getInfo(); } class Email implements IReceiver { public String getInfo() { return "電子郵件資訊: hello,world"; } } //增加微信 class WeiXin implements IReceiver { public String getInfo() { return "微信資訊: hello,ok"; } } //方式2 class Person { //這裡我們是對介面的依賴 public void receive(IReceiver receiver ) { System.out.println(receiver.getInfo()); } } public class DependencyInversion { public static void main(String[] args) { //使用者端無需改變 Person person = new Person(); person.receive(new Email()); person.receive(new WeiXin()); } }
package com.szh.principle.inversion.improve; /** * 方式1: 通過介面傳遞實現依賴 */ interface IOpenAndClose1 { public void open(ITV1 tv); //抽象方法,接收介面 } interface ITV1 { //ITV介面 public void play(); } class OpenAndClose1 implements IOpenAndClose1 { @Override public void open(ITV1 tv){ tv.play(); } } class ChangHong1 implements ITV1 { @Override public void play() { System.out.println("長虹電視機,開啟"); } } public class DependencyPass1 { public static void main(String[] args) { ChangHong1 changHong = new ChangHong1(); OpenAndClose1 openAndClose = new OpenAndClose1(); openAndClose.open(changHong); } }
package com.szh.principle.inversion.improve; /** * 方式2: 通過構造方法依賴傳遞 */ interface IOpenAndClose2 { public void open(); //抽象方法 } interface ITV2 { //ITV介面 public void play(); } class OpenAndClose2 implements IOpenAndClose2 { public ITV2 tv; //成員 public OpenAndClose2(ITV2 tv){ //構造器 this.tv = tv; } public void open(){ this.tv.play(); } } class ChangHong2 implements ITV2 { public void play() { System.out.println("長虹電視機,開啟"); } } public class DependencyPass2 { public static void main(String[] args) { ChangHong2 changHong = new ChangHong2(); //通過構造器進行依賴傳遞 OpenAndClose2 openAndClose = new OpenAndClose2(changHong); openAndClose.open(); } }
package com.szh.principle.inversion.improve; /** * 方式3: 通過setter方法傳遞 */ interface IOpenAndClose3 { public void open(); // 抽象方法 public void setTv(ITV3 tv); } interface ITV3 { // ITV介面 public void play(); } class OpenAndClose3 implements IOpenAndClose3 { private ITV3 tv; public void setTv(ITV3 tv) { this.tv = tv; } public void open() { this.tv.play(); } } class ChangHong3 implements ITV3 { public void play() { System.out.println("長虹電視機,開啟"); } } public class DependencyPass3 { public static void main(String[] args) { ChangHong3 changHong = new ChangHong3(); //通過setter方法進行依賴傳遞 OpenAndClose3 openAndClose = new OpenAndClose3(); openAndClose.setTv(changHong); openAndClose.open(); } }
以上就是java設計模式七大原則依賴倒轉原則的詳細內容,更多關於java設計模式依賴倒轉原則的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45