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

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

C++設(shè)計(jì)模式之享元模式(Flyweight)-創(chuàng)新互聯(lián)

享元模式顧名思義就是羽量級(jí)模式或者蠅級(jí)模式,形容體量小的應(yīng)用,該模式主要的設(shè)計(jì)目的是為了迎合系統(tǒng)大量相似數(shù)據(jù)的應(yīng)用而生,減少用于創(chuàng)建和操作相似的細(xì)碎對(duì)象所花費(fèi)的成本。大量的對(duì)象會(huì)消耗高內(nèi)存,享元模式給出了一個(gè)解決方案,即通過(guò)共享對(duì)象來(lái)減少內(nèi)存負(fù)載。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的秦淮網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

作用

通過(guò)復(fù)用相同的對(duì)象來(lái)減少對(duì)象的創(chuàng)建數(shù)量,創(chuàng)建更小的對(duì)象組,并通過(guò)共享實(shí)現(xiàn)重用。通過(guò)歸類,將對(duì)象的屬性分為內(nèi)蘊(yùn)狀態(tài)和外蘊(yùn)狀態(tài)。要?jiǎng)?chuàng)建具體的享元對(duì)象,我們需要?jiǎng)?chuàng)建一個(gè)享元工廠來(lái)統(tǒng)一管理對(duì)象的生成和輸出,享元工廠是實(shí)現(xiàn)享元模式的關(guān)鍵。

舉個(gè)例子,享元模式可以看成是一個(gè)工具箱,而享元對(duì)象就是工具箱內(nèi)的具體的工具,我們?cè)谑褂霉ぞ叩臅r(shí)候,不必每回臨時(shí)的制造工具,而是直接從工具箱里找到工具進(jìn)行使用,這樣就大大節(jié)約了制造工具的成本時(shí)間和工具占用的空間。

享元模式比較迷惑在于理解兩種狀態(tài)的分類,內(nèi)蘊(yùn)狀態(tài)是對(duì)象本身的屬性,在生成對(duì)象以后一般不會(huì)進(jìn)行改變,比如工具中的屬性:名字、大小、重量等,還有就是我們一般需要一個(gè)關(guān)鍵性的屬性作為其區(qū)別于其他對(duì)象的key,如工具的話我們可以把名稱作為找到工具的唯一標(biāo)識(shí)。

外蘊(yùn)狀態(tài)是對(duì)象的外部描述,是每個(gè)對(duì)象的可變部分,比如對(duì)工具的使用地點(diǎn)、使用時(shí)間、使用人、工作內(nèi)容的描述,這些屬性不屬于對(duì)象本身,而是根據(jù)每回使用情況進(jìn)行變化的,這就需要制作成接口進(jìn)行外部調(diào)用,而外蘊(yùn)狀態(tài)的維護(hù)是由調(diào)用者維護(hù)的,對(duì)象內(nèi)不進(jìn)行維護(hù)。

類視圖

C++設(shè)計(jì)模式之享元模式(Flyweight)

實(shí)現(xiàn)

//Flyweight
class tool
{
public:
  //內(nèi)蘊(yùn)狀態(tài)
  string name;
  int nSize;
  int nWeight;
public:
  //外蘊(yùn)狀態(tài)
  virtual int used(string person, string work)=0;
}
//ConcreteFlyweight
class hammer : public tool
{
public:
  hammer():name("hammer"){}
  int used(string person, string work)
  {
    cout<< person <<"use"<::iterator it = m_tool.find(toolname);
    for(it=m_tool.begin();it!=m_tool.end();it++)
    {
      delete it.second;
    }

  }
  tool* GetTool(string toolname)
  {
    map::iterator it = m_tool.find(toolname);
    if(it != m_tool.end())
    {
      return (tool*) it.second;
    }
    else
    {
      tool* tooltemp= NULL;
      if(toolname == "hammer")
        tooltemp = new hammer();
      else if(toolname == "screwdriver")
        tooltemp = new screwdriver();
      else if(toolname == "saw")
        tooltemp = new saw();

      if(tooltemp !=NULL)
        m_tool.insert(make_pair(toolname,tooltemp));
      return tooltemp;
    }
  }
private:
  map m_tool;
}

int main()
{
  //外蘊(yùn)狀態(tài) 由調(diào)用者維護(hù)
  string person1 = "zhangsan";
  string person2 = "lisi";
  string work1 = "make desk";
  string work2 = "repair bike";
  //生成工廠
  toolbox tBox;
  //獲取享元
  tool* tool1 = tBox.GetTool("hammer");
  tool1.used(person1,work1);

  tool* tool2 = tBox.GetTool("screwdriver");
  tool2.used(person2,work2);
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前名稱:C++設(shè)計(jì)模式之享元模式(Flyweight)-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://weahome.cn/article/cspgoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部