真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java設(shè)計(jì)模式之依賴(lài)倒置的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)java設(shè)計(jì)模式之依賴(lài)倒置的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)推出壽陽(yáng)免費(fèi)做網(wǎng)站回饋大家。

具體如下:

依賴(lài)倒置的概念我也是在一篇博文上理解的,我覺(jué)得很精辟,所以收錄在我的博客中。

類(lèi)A 依賴(lài) 類(lèi)B,之后根據(jù)需求 類(lèi)A 變換為依賴(lài) 類(lèi)C,這時(shí)候我們認(rèn)為類(lèi)A 是高層模塊, 類(lèi)B 和 類(lèi)C 是低層模塊。

什么是高層模塊?什么是底層模塊?
高層模塊你可以理解為控制層,負(fù)責(zé)復(fù)雜的業(yè)務(wù)邏輯。
低層模塊你可以理解為數(shù)據(jù)層,負(fù)責(zé)基本的原子操作。

什么意思? 我舉個(gè)例子。
比如大胃王比賽。
在這場(chǎng)比賽中的規(guī)則是比賽誰(shuí)吃饅頭吃的最多。有參賽選手Q和W

/**
 * 饅頭 實(shí)體類(lèi)
 */
class SteamedBuns
{
  private String name = "饅頭"; 
  public String getName()
  {
    return this.name;
  }
}
class Player
{
  //得了多少分
  private int intgral;
  private Sting name;
  public Player(String name)
  {
    setName(name);
  }    
  public void setName(String name)
  {
    this.name = name;
  }
  public String getName()
  {
    return name;
  }
  public void setIntgral(int intgral)
  {
    this.intgral= intgral;
  }
  public int getIntgral()
  {
    return this.intgral;
  }
  public void eat(SteamedBuns steamedBuns)
  {
    System.out.println("我開(kāi)吃了");
    setIntgral(getIntgral() + 1);
  }
}
public class Main
{
  pubic static void main(String[] agrs)
  {
    Player q = new Player("Q");//選手Q
    Player w = new Player("W");//選手W
    q.eat(new SteamedBuns());//選手Q吃饅頭
    w.eat(new SteamedBuns());//選手W吃饅頭
  }
}

那么,之后問(wèn)題來(lái)了。Q和W 比分一樣,胃口太大把饅頭吃光了,現(xiàn)在好追加比賽吃包子。 但Q和W 的實(shí)體只支持吃饅頭,這個(gè)不符合情理哇,不可能一個(gè)人能吃饅頭不能吃包子哇。

public void eat(SteamedBuns steamedBuns)//選手只支持吃饅頭

有的同學(xué)可能會(huì)想到用重載這個(gè)方法。

public void eat(SteamedBuns steamedBuns){}   //選手支持吃饅頭
public void eat(SteamedStuffedBun steamedStuffedBun){} //選手支持吃包子

思路是正確的,但是在實(shí)際開(kāi)發(fā)中,這樣做,可能會(huì)給程序帶來(lái)不必要的風(fēng)險(xiǎn)。
這時(shí)候依賴(lài)倒置的優(yōu)越性就體現(xiàn)出來(lái)了。
還是思考。既然饅頭吃光了,現(xiàn)在要比賽吃包子,那么我們想一下如果包子也吃光了還沒(méi)有分出勝負(fù),要繼續(xù)追加比賽怎么辦?再用重載嗎? 人都是可以吃食物的,我們要讓包子和饅頭都實(shí)現(xiàn)食物接口。而參賽選手的依賴(lài)應(yīng)該從包子和饅頭 抽象出來(lái) 依賴(lài)食物接口。 這樣只要一個(gè)類(lèi)實(shí)現(xiàn)了食物接口,那么都能被吃。

/**
 * 食物接口
 */
interface Food
{
  public String getName();
}
/**
 * 饅頭 實(shí)體類(lèi)
 */
class SteamedBuns implements Food
{
  private String name = "饅頭";
  @Override
  public String getName()
  {
    return this.name;
  }
}
/**
 * 包子 實(shí)體類(lèi)
 */
class SteamedStuffedBun implements Food
{
  private String name = "包子";
  @Override
  public String getName()
  {
    return this.name;
  }
}
class Player
{
  private int intgral;
  private Sting name;
  public Player(String name)
  {
    setName(name);
  }  
  public void setName(String name)
  {
    this.name = name;
  }
  public String getName()
  {
    return name;
  }
  public void setIntgral(int intgral)
  {
    this.intgral= intgral;
  }
  public int getIntgral()
  {
    return this.intgral;
  }
  /**取消對(duì)具體食物種類(lèi)的依賴(lài)
  public void eat(SteamedBuns steamedBuns)
  {
    System.out.println("我開(kāi)吃了");
    setIntgral(getIntgral() + 1);
  }
  */
  public void eat(Food food)
  {
    System.out.println("我開(kāi)吃了");
    setIntgral(getIntgral() + 1);
  }
}
public class Main
{
  pubic static void main(String[] agrs)
  {
    Player q = new Player("Q");//選手Q
    Player w = new Player("W");//選手W
    q.eat(new SteamedBuns());//選手Q吃饅頭
    w.eat(new SteamedBuns());//選手W吃饅頭
    q.eat(new SteamedStuffedBun());//選手Q吃包子
    w.eat(new SteamedStuffedBun());//選手W吃包子
  }
}

這樣的設(shè)計(jì)有助于降低類(lèi)之間的耦合程度,抽象穩(wěn)定的多,細(xì)節(jié)交給實(shí)現(xiàn)類(lèi)。

關(guān)于“java設(shè)計(jì)模式之依賴(lài)倒置的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


文章題目:java設(shè)計(jì)模式之依賴(lài)倒置的示例分析
本文路徑:http://weahome.cn/article/ggsiec.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部