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