共享模式(C 實現)

2021-09-25 19:02:02 字數 2546 閱讀 8067

(本部落格旨在個人總結回顧)

共享模式:運用共享技術有效支撐大量細粒度的物件。

說明:

優點:大大減少物件的建立,降低系統的記憶體,使效率提高。

缺點:提高了系統的複雜度,需要分離出外部狀態和內部狀態,而且外部狀態具有固有化的性質,不應該隨著內部狀態的變化而變化,否則會造成系統的混亂。

// stdafx.h : 標準系統包含檔案的包含檔案,

// 或是經常使用但不常更改的

// 特定於專案的包含檔案

//#pragma once

#include "targetver.h"

#include #include #include using namespace std;

// todo: 在此處引用程式需要的其他標頭檔案

flyweight.h

#pragma once

class flyweight

;

flyweight.cpp

#include "stdafx.h"

#include "flyweight.h"

flyweight::flyweight()

flyweight::~flyweight()

concreteflyweight.h

#pragma once

#include "flyweight.h"

class concreteflyweight :

public flyweight

;

concreteflyweight.cpp

#include "stdafx.h"

#include "concreteflyweight.h"

concreteflyweight::concreteflyweight()

concreteflyweight::~concreteflyweight()

void concreteflyweight::operation(int nextrinsicsstate)

unshareconcreteflyweight.h

#pragma once

#include "flyweight.h"

class unsharedconcreteflyweight :

public flyweight

;

unshareconcreteflyweight.cpp

#include "stdafx.h"

#include "unsharedconcreteflyweight.h"

unsharedconcreteflyweight::unsharedconcreteflyweight()

unsharedconcreteflyweight::~unsharedconcreteflyweight()

void unsharedconcreteflyweight::operation(int nextrinsicsstate)

flyweightfactory.h

#pragma once

#include #include "concreteflyweight.h"

class flyweightfactory

;

flyweightfactory.cpp

#include "stdafx.h"

#include "flyweightfactory.h"

flyweightfactory::flyweightfactory()

flyweightfactory::~flyweightfactory()

concreteflyweight* flyweightfactory::getflyweight(string strkey)

else

}

呼叫**

flyweightpatternmemo.cpp

// flyweightpatternmemo.cpp : 定義控制台應用程式的入口點。

設計模式 共享模式

看了果凍兄的部落格,發現大家對裡面的乙個實現有一些不同的見解,貼出來記錄一下,其博文如下 共享模式的主要想法就是 運用共享技術有效地支援大量細粒度的物件。所以應該將物件的外部特徵由更高一級的物件來管理。在原文中,博主將棋子的外部特徵 座標 作為了棋子的乙個屬性來管理,又在棋盤類中採用覆蓋的方法來每一...

共享模式 專有模式

概念 適用場景 通用引數 local listener pmon只會動態註冊port等於1521的監聽,否則pmon不能動態註冊listener,要想讓pmon動態註冊listener,需要設定local listener引數。listener networks 配置多個remote listene...

共享模式 專有模式

概念 適用場景 通用引數 local listener pmon只會動態註冊port等於1521的監聽,否則pmon不能動態註冊listener,要想讓pmon動態註冊listener,需要設定local listener引數。listener networks 配置多個remote listene...