中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

岳陽(yáng)網(wǎng)站設(shè)計(jì)改版電子商務(wù)seo

岳陽(yáng)網(wǎng)站設(shè)計(jì)改版,電子商務(wù)seo,網(wǎng)絡(luò)推廣公司起名,上海網(wǎng)站開(kāi)發(fā)怎么做1 享元模式介紹 2 享元模式原理 3 享元模式實(shí)現(xiàn) 抽象享元類可以是一個(gè)接口也可以是一個(gè)抽象類,作為所有享元類的公共父類, 主要作用是提高系統(tǒng)的可擴(kuò)展性. //* 抽象享元類 public abstract class Flyweight {public abstract void operation(String extrinsicState); }具體享…
1 享元模式介紹

在這里插入圖片描述
在這里插入圖片描述

2 享元模式原理

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3 享元模式實(shí)現(xiàn)

抽象享元類可以是一個(gè)接口也可以是一個(gè)抽象類,作為所有享元類的公共父類, 主要作用是提高系統(tǒng)的可擴(kuò)展性.

//* 抽象享元類
public abstract class Flyweight {public abstract void operation(String extrinsicState);
}

具體享元類
具體享元類中要將內(nèi)部狀態(tài)和外部狀態(tài)分開(kāi)處理,內(nèi)部狀態(tài)作為具體享元類的成員變量,而外部狀態(tài)通過(guò)注入的方式添加到具體享元類中.

/*** 可共享的-具體享元類* 注意: 在具體享元類中,需要將內(nèi)部狀態(tài)和外部狀態(tài)分開(kāi)處理.**/
public class ConcreteFlyweight extends Flyweight{//內(nèi)部狀態(tài) : inState作為一個(gè)成員變量,同一個(gè)享元對(duì)象的內(nèi)部狀態(tài)是一致的.private String inState;public ConcreteFlyweight(String inState) {this.inState = inState;}/*** 外部狀態(tài)在使用的時(shí)候,通常是有外部設(shè)置,不保存在享元對(duì)象中,即使是同一個(gè)對(duì)象* @param state*/@Overridepublic void operation(String state) {System.out.println("=== 享元對(duì)象的內(nèi)部狀態(tài): " + inState + ",外部狀態(tài): " + state );}
}

非共享享元類,不復(fù)用享元工廠內(nèi)部狀態(tài),但是是抽象享元類的子類或?qū)崿F(xiàn)類

/*** 非共享的具體享元類**/
public class UnsharedFlyweight  extends Flyweight{private String inState;public UnsharedFlyweight(String inState) {this.inState = inState;}@Overridepublic void operation(String state) {System.out.println("=== 使用不共享對(duì)象,內(nèi)部狀態(tài): " + inState + ",外部狀態(tài): " + state );}
}

享元工廠類, 管理一個(gè)享元對(duì)象類的緩存池。它會(huì)存儲(chǔ)享元對(duì)象之間需要傳遞的共有狀態(tài),比如,按照大寫(xiě)英文字母來(lái)作為狀態(tài)標(biāo)識(shí),這種只在享元對(duì)象之間傳遞的方式就叫內(nèi)部狀態(tài)。同時(shí),它還提供了一個(gè)通用方法getFlyweight(),主要通過(guò)內(nèi)部狀態(tài)標(biāo)識(shí)來(lái)獲取享元對(duì)象。

/*** 享元工廠類* 作用: 作為存儲(chǔ)享元對(duì)象的享元池.用戶獲取享元對(duì)象時(shí)先從享元池中獲取,有則返回,沒(méi)有創(chuàng)建新的返回給用戶,* 并且在享元池中保存**/
public class FlyweightFactory {//定義一個(gè)Map集合用于存儲(chǔ)享元對(duì)象,實(shí)現(xiàn)享元池private Map<String,Flyweight> pool = new HashMap<>();//實(shí)現(xiàn)享元對(duì)象之間的狀態(tài)傳遞public FlyweightFactory() {//添加對(duì)應(yīng)的內(nèi)部狀態(tài)pool.put("A",new ConcreteFlyweight("A"));pool.put("B",new ConcreteFlyweight("B"));pool.put("C",new ConcreteFlyweight("C"));}//根據(jù)內(nèi)部狀態(tài)進(jìn)行查找public Flyweight getFlyweight(String key){//對(duì)象是否存在if(pool.containsKey(key)){System.out.println("=== 享元池中存在,直接復(fù)用,key : " + key);return pool.get(key);}else{//如果對(duì)象不存在,就創(chuàng)建一個(gè)添加到享元池,然后返回System.out.println("=== 享元池中不存在,創(chuàng)建并復(fù)用,key: " + key);Flyweight fw = new ConcreteFlyweight(key);pool.put(key,fw);return  fw;}}
}
public class Client {public static void main(String[] args) {//獲取工廠對(duì)象FlyweightFactory factory = new FlyweightFactory();//通過(guò)工廠對(duì)象獲取共享的享元對(duì)象Flyweight a1 = factory.getFlyweight("A");a1.operation("a1ExState");Flyweight a2 = factory.getFlyweight("A");a2.operation("a2ExState");System.out.println(a1 == a2);//獲取非共享的享元對(duì)象UnsharedFlyweight u1 = new UnsharedFlyweight("A");UnsharedFlyweight u2 = new UnsharedFlyweight("A");System.out.println(u1 == u2);}
}
4 享元模式應(yīng)用實(shí)例

在這里插入圖片描述
在這里插入圖片描述

/*** 抽象享元類: 五子棋**/
public abstract class GobangFlyweight {public abstract String getColor();public void display(){System.out.println("棋子顏色: " + this.getColor());}
}
/*** 共享享元類-白色棋子**/
public class WriteGobang extends GobangFlyweight {@Overridepublic String getColor() {return "白色";}
}
/*** 共享享元類-黑色棋子**/
public class BlackGobang extends GobangFlyweight {@Overridepublic String getColor() {return "黑色";}
}
/*** 享元工廠類-生產(chǎn)五子棋棋子**/
public class GobangFactory {//享元池private static Map<String,GobangFlyweight> pool;//創(chuàng)建共享享元對(duì)象,設(shè)置對(duì)象的內(nèi)部狀態(tài)private GobangFactory() {pool = new HashMap<>();GobangFlyweight black = new BlackGobang(); //黑子GobangFlyweight write = new WriteGobang(); //白子pool.put("b",black);pool.put("w",write);}//獲取唯一享元工廠對(duì)象的方法public static GobangFactory getInstance(){return SingletonHolder.INSTANCE;}//靜態(tài)內(nèi)部類private static class SingletonHolder{private static final GobangFactory INSTANCE = new GobangFactory();}//通過(guò)key獲取集合中的享元對(duì)象public GobangFlyweight getGobang(String key){return pool.get(key);}}
public class Client {public static void main(String[] args) {GobangFactory instance = GobangFactory.getInstance();//獲取3顆黑子GobangFlyweight b1 = instance.getGobang("b");GobangFlyweight b2 = instance.getGobang("b");GobangFlyweight b3 = instance.getGobang("b");System.out.println("判斷黑子是否是同一對(duì)象: " + (b1 == b2));GobangFlyweight w1 = instance.getGobang("w");GobangFlyweight w2 = instance.getGobang("w");System.out.println("判斷白子是否是同一對(duì)象: " + (w1 == w2));//顯示棋子b1.display();b2.display();b3.display();w1.display();w2.display();}
}

在這里插入圖片描述

5 享元模式總結(jié)

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

http://www.risenshineclean.com/news/55754.html

相關(guān)文章:

  • 做門戶網(wǎng)站的系統(tǒng)seo公司賺錢嗎
  • 2019做網(wǎng)站賺錢么企業(yè)培訓(xùn)課程ppt
  • 網(wǎng)站截圖怎么做互聯(lián)網(wǎng)平臺(tái)推廣怎么做
  • 網(wǎng)站建設(shè)神器現(xiàn)在做網(wǎng)絡(luò)推廣都有什么方式
  • 怎么給網(wǎng)站命名青島seo關(guān)鍵詞
  • 手機(jī)網(wǎng)站開(kāi)發(fā)企業(yè)網(wǎng)站推廣的形式有
  • 做ppt到哪個(gè)網(wǎng)站找圖片網(wǎng)絡(luò)營(yíng)銷推廣方案前言
  • c#做asp.net網(wǎng)站余姚網(wǎng)站seo運(yùn)營(yíng)
  • wordpress頭條主題中國(guó)seo第一人
  • 怎么免費(fèi)建立自己網(wǎng)站網(wǎng)站推廣優(yōu)化的方法
  • 官網(wǎng)站內(nèi)推廣內(nèi)容seo快速推廣竅門大公開(kāi)
  • 重慶企業(yè)網(wǎng)站建設(shè)解決方案百度銷售系統(tǒng)
  • 無(wú)錫做網(wǎng)站排名上海市人大常委會(huì)
  • 贊賞分享wordpress代碼360優(yōu)化大師官方官網(wǎng)
  • 微信網(wǎng)頁(yè)制作網(wǎng)站長(zhǎng)春seo優(yōu)化企業(yè)網(wǎng)絡(luò)躍升
  • 天津市住房與城鄉(xiāng)建設(shè)廳網(wǎng)站百度平臺(tái)
  • 昆明網(wǎng)站建設(shè)工作室西安百度seo排名
  • 兼職網(wǎng)網(wǎng)站建設(shè)方案建議書(shū)娃哈哈軟文推廣
  • ui設(shè)計(jì)和網(wǎng)站開(kāi)發(fā)seo效果檢測(cè)步驟
  • 撫州市建設(shè)局網(wǎng)站桂林最新消息今天
  • web前端面試以前都是做的小網(wǎng)站怎樣在百度上發(fā)表文章
  • 服務(wù)性網(wǎng)站建設(shè)的原則seo雙標(biāo)題軟件
  • 免費(fèi)的網(wǎng)站在線客服系統(tǒng)關(guān)鍵詞搜索技巧
  • 建設(shè)中網(wǎng)站首頁(yè)百度app怎么找人工客服
  • 呼和浩特網(wǎng)站建設(shè)公司網(wǎng)站模板之家
  • 哈爾濱網(wǎng)站制作公司價(jià)格廣東seo推廣公司
  • 常用的建站工具有哪些電銷名單渠道在哪里找
  • 外貿(mào)模版網(wǎng)站奉化seo頁(yè)面優(yōu)化外包
  • 沒(méi)有網(wǎng)站如何做營(yíng)銷外包公司和勞務(wù)派遣的區(qū)別
  • 網(wǎng)站建設(shè)經(jīng)費(fèi)預(yù)算包括哪些app開(kāi)發(fā)需要多少錢