设计模式工作笔记-简单工厂场景与实现(针对接口编程的设计思想)
生活随笔
收集整理的這篇文章主要介紹了
设计模式工作笔记-简单工厂场景与实现(针对接口编程的设计思想)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
簡(jiǎn)單工廠:通過(guò)接口的方式,把實(shí)現(xiàn)和變化隔離
接口編程:是一種特殊的抽象類(lèi),是一個(gè)純虛類(lèi)。通常接口來(lái)定義類(lèi)的外部,就相當(dāng)于一份契約,其實(shí)就是根據(jù)外部應(yīng)用
需要的功能,約定了實(shí)現(xiàn)類(lèi)應(yīng)該要實(shí)現(xiàn)的功能。
軟件開(kāi)發(fā)中永恒的主題是“變化”,接口的最重要的一個(gè)設(shè)計(jì)語(yǔ)義就是封裝變化,也就是隔離變化(內(nèi)部實(shí)現(xiàn)對(duì)外部是透
明的)。
從軟件的整體結(jié)構(gòu)上來(lái)看,只要接口不變,內(nèi)部實(shí)現(xiàn)的變化就不會(huì)影響到外部應(yīng)用,從而使得系統(tǒng)更加靈活,具有更好的
擴(kuò)展性和可維護(hù)性。
設(shè)計(jì)模式的重點(diǎn)是對(duì)象間的結(jié)構(gòu)!!!
如下面的這一套代碼:
#include <iostream> #include <string> using namespace std;class Api{ public:virtual void print(string data) = 0; protected:Api(){} //屏蔽構(gòu)造函數(shù),體現(xiàn)接口 };class Imple :public Api{ public:void print(string data){cout << "print in Imple: " << data << endl;} };//測(cè)試用的客戶(hù)端 int main(){Api *pApi = new Imple();pApi->print("運(yùn)行");system("pause");return 0; }此程序的封裝性;
因?yàn)楹?jiǎn)單工廠要求實(shí)現(xiàn)與變化分離;
而Api *pApi = new Imple();中客戶(hù)已經(jīng)知道你這里面有一個(gè)Imple了;
所以這不是簡(jiǎn)單工廠所要提現(xiàn)的
下面這個(gè)是簡(jiǎn)單工廠的思想:
#include <iostream> #include <string> using namespace std;class Api{ public:virtual void print(string data) = 0; protected:Api(){} }; class ImpleOne :public Api{ public:void print(string data){cout << "print in ImpleOne: " << data << endl;} };class ImpleTwo :public Api{ public:void print(string data){cout << "print in ImpleTwo: " << data << endl;} };//下面的這個(gè)是關(guān)鍵了啊,這個(gè)Factory具有承上啟下的作用 class Factory{ public:static Api* createApi(int type){Api *pApi = nullptr;if (type == 1){pApi = new ImpleOne;}else if (type == 2){pApi = new ImpleTwo;}return pApi;} };/* 使用 傳入?yún)?shù)1,可以實(shí)現(xiàn)從數(shù)據(jù)庫(kù)讀入的功能, 傳入?yún)?shù)2,可以實(shí)現(xiàn)從文本讀入的功能 這就是更具接口的公約,實(shí)現(xiàn)做什么樣的事情實(shí)現(xiàn)和變化隔離,但覺(jué)得參數(shù)2效率不行時(shí),執(zhí)行修改2里面的東西,這樣就實(shí)現(xiàn)了分離 簡(jiǎn)單工廠:通過(guò)接口的方式,把實(shí)現(xiàn)和變化隔離 */int main(){Api *pApi = Factory::createApi(1);????//感覺(jué)就是把2個(gè)new的工作放到了Factory里面pApi->print("簡(jiǎn)單工廠!");????????????//如何理解是不是把new放進(jìn)去就是簡(jiǎn)單工廠system("pause");return 0; }//實(shí)現(xiàn)了客戶(hù)調(diào)用和implOne,implTwo的解耦合 //factory類(lèi)實(shí)現(xiàn)了變化隔離簡(jiǎn)單工廠的定義:
提供一個(gè)創(chuàng)建對(duì)象實(shí)例的功能,而無(wú)需關(guān)心其具體實(shí)現(xiàn)。被創(chuàng)建的類(lèi)型可以是接口、抽象類(lèi),也可以是具體的類(lèi)。
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!
總結(jié)
以上是生活随笔為你收集整理的设计模式工作笔记-简单工厂场景与实现(针对接口编程的设计思想)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qt工作笔记-QGraphics框架场景
- 下一篇: Qt文档阅读笔记-QStyledItem