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

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

沈陽網(wǎng)站建設(shè)推廣南京seo網(wǎng)絡(luò)推廣

沈陽網(wǎng)站建設(shè)推廣,南京seo網(wǎng)絡(luò)推廣,WordPress蜘蛛爬行插件,八爺源碼UML圖與工廠模式 UML圖設(shè)計(jì)模式三原則簡單工廠模式工廠模式 UML圖 類封裝了數(shù)據(jù)和行為,是面向?qū)ο蟮闹匾M成部分,它是具有相同屬性、操作、關(guān)系的對象集合的總稱 有以下UML圖,分析如下: 可見性: 表示public、# 表示…

UML圖與工廠模式

  • UML圖
  • 設(shè)計(jì)模式三原則
  • 簡單工廠模式
  • 工廠模式

UML圖

??類封裝了數(shù)據(jù)和行為,是面向?qū)ο蟮闹匾M成部分,它是具有相同屬性、操作、關(guān)系的對象集合的總稱

有以下UML圖,分析如下:

?

  • 可見性: + 表示public、# 表示protected、- 表示private、__(下劃線)表示static
  • 屬性的表示方式:【可見性】【屬性名稱】:【類型】= { 缺省值,可選 }
  • 方法的表示方式:【可見性】【方法名稱】(【參數(shù)名 : 參數(shù)類型,……】):【返回值類型】

定義的類是一個(gè)抽象類(類中有純虛函數(shù)),在畫UML類圖的時(shí)候,類名需要使用斜體顯示,并在最后給函數(shù)指定=0。

設(shè)計(jì)模式三原則

單一職責(zé)原則

  • 核心思想: ??一個(gè)類應(yīng)該只有一個(gè)引起它變化的原因??(即一個(gè)類只負(fù)責(zé)一項(xiàng)職責(zé))
  • 通俗理解: 即一個(gè)類只負(fù)責(zé)一項(xiàng)職責(zé),一個(gè)類不要 “身兼數(shù)職”
  • 關(guān)鍵點(diǎn): 將不同職責(zé)分離到不同的類中,職責(zé)分離

開閉原則

  • 核心思想: 軟件實(shí)體(類、模塊、函數(shù))應(yīng)對擴(kuò)展開放,對修改關(guān)閉??
  • 通俗理解??: 新增功能時(shí)盡量通過擴(kuò)展(如繼承、組合)實(shí)現(xiàn),而非修改已有代碼

里氏替換原則

  • 核心思想: 子類必須能夠替換父類且不影響程序的正確性??
  • ??通俗理解??: 子類要能包含父類的所有屬性和方法

三者關(guān)系與總結(jié)??

原則核心目標(biāo)實(shí)現(xiàn)手段
??單一職責(zé)(SRP)?高內(nèi)聚、低耦合拆分職責(zé)到不同類
??開閉原則(OCP)可擴(kuò)展性,減少修改風(fēng)險(xiǎn)依賴抽象,使用多態(tài)/組合
??里氏替換(LSP)?? 保證繼承體系的正確性合理設(shè)計(jì)父子類契約

簡單工廠模式

提供一個(gè)靜態(tài)方法或普通方法,根據(jù)輸入?yún)?shù)(如類型標(biāo)識)決定創(chuàng)建并返回哪種具體類的實(shí)例。

  • 工廠類(SimpleFactory)??:負(fù)責(zé)創(chuàng)建具體產(chǎn)品,包含判斷邏輯。
  • ??抽象產(chǎn)品(Product)??:定義產(chǎn)品的公共接口(通常是抽象類或接口)
  • 具體產(chǎn)品(ConcreteProduct)??:實(shí)現(xiàn)抽象產(chǎn)品的具體類。

簡單工廠模式相關(guān)類的創(chuàng)建和使用步驟如下:

  1. 定義一個(gè)抽象產(chǎn)品基類Product,作為各個(gè)對象的基類,
  2. 創(chuàng)建一個(gè)工廠類,并且為工廠類添加公共成員函數(shù),通過這個(gè)函數(shù)來創(chuàng)建我們需要的對象,這個(gè)函數(shù)稱為工廠函數(shù)。簡單工廠需要的工廠類只只有一個(gè)。
  3. 關(guān)于工廠函數(shù),返回的是基類指針,以此實(shí)現(xiàn)多態(tài),函數(shù)體則根據(jù)不同的枚舉類型創(chuàng)建不同的對象實(shí)例
  4. 關(guān)于使用,首先創(chuàng)建一個(gè)工廠類對象,然后通過這個(gè)對象調(diào)用工廠函數(shù),這樣就可以生產(chǎn)出一個(gè)指定類型的實(shí)例對象了。

相關(guān)UML類圖與實(shí)例代碼如下:

#include <bits/stdc++.h>using namespace std;// 從而實(shí)現(xiàn)對象的解耦合, 同時(shí)增強(qiáng)了程序的擴(kuò)展性
// 抽象產(chǎn)品接口
class Product {
public:virtual ~Product() = default;virtual void operation() const = 0;
};// 具體產(chǎn)品類A
class ConcreteProductA : public Product {
public:void operation() const override {cout << "ConcreteProductA operation" << endl;}
};// 具體產(chǎn)品類B
class ConcreteProductB : public Product {
public:void operation() const override {cout << "ConcreteProductB operation" << endl;}
};// 工廠類
class SimpleFactory {
public:static Product* createProduct(char type) {switch(type){case 'A':	 return new ConcreteProductA();	break;case 'B':	 return new ConcreteProductB();	break;default:	break;}}
};// 客戶端代碼
int main() {char type;cout << "Enter product type (A or B): ";cin >> type;Product* product = SimpleFactory::createProduct(type);product->operation();delete product;  // 手動(dòng)釋放內(nèi)存return 0;
}

說明:

  • 基類的析構(gòu)函數(shù)應(yīng)該是虛函數(shù),這樣才能夠通過父類指針或引用析構(gòu)子類的對象。
  • 工廠函數(shù)返回值為基類指針,指向子類對象的地址,實(shí)現(xiàn)多態(tài)
  • 簡單工廠模式的工廠函數(shù)是違背了開閉原則的

工廠模式

??在上面的簡單工廠模式的工廠函數(shù)中需要?jiǎng)?chuàng)建不同的實(shí)例對象,現(xiàn)在如果想要生成更多實(shí)例對象,那么就需要在工廠函數(shù)的switch語句中添加更多的case,很明顯這違背了封閉原則,也就意味著需要基于開放原則來解決這個(gè)問題。

簡單工廠模式是只有一個(gè)工廠類,而工廠模式是有很多的工廠類

  • 一個(gè)基類,包含一個(gè)虛工廠函數(shù),用于實(shí)現(xiàn)多態(tài)。
  • 多個(gè)子類,重寫父類的工廠函數(shù)。每個(gè)子工廠類負(fù)責(zé)生產(chǎn)一種產(chǎn)品的實(shí)例對象,這相當(dāng)于再次解耦,將工廠類的職責(zé)再次拆分、細(xì)化,如果要生產(chǎn)新品種的惡魔果實(shí),那么只需要添加對應(yīng)的工廠類,無需修改原有的代碼。

相關(guān)UML類圖與實(shí)例代碼如下:

#include <iostream>
using namespace std;// 抽象產(chǎn)品接口
class Product {
public:virtual ~Product() = default;virtual void operation() const = 0;
};// 具體產(chǎn)品類A
class ConcreteProductA : public Product {
public:void operation() const override {cout << "ConcreteProductA operation" << endl;}
};// 具體產(chǎn)品類B
class ConcreteProductB : public Product {
public:void operation() const override {cout << "ConcreteProductB operation" << endl;}
};// 工廠接口
class Factory {
public:virtual ~Factory() = default;virtual Product* createProduct() const = 0;
};// 具體工廠類A
class ConcreteFactoryA : public Factory {
public:Product* createProduct() const override {return new ConcreteProductA();}
};// 具體工廠類B
class ConcreteFactoryB : public Factory {
public:Product* createProduct() const override {return new ConcreteProductB();}
};// 客戶端代碼
int main() {char type;cout << "Enter product type (A or B): ";cin >> type;Factory* factory = nullptr;if (type == 'A') {factory = new ConcreteFactoryA();} else if (type == 'B') {factory = new ConcreteFactoryB();} else {cerr << "Unknown product type" << endl;return 1;}Product* product = factory->createProduct();product->operation();delete product;  // 手動(dòng)釋放產(chǎn)品對象delete factory;  // 手動(dòng)釋放工廠對象return 0;
}

??在真實(shí)的項(xiàng)目場景中,要生成什么類型的具體產(chǎn)品(ConcreteProductA/B)其實(shí)是通過客戶端的操作界面控制的,它對應(yīng)的可能是一個(gè)按鈕或者是一個(gè)選擇列表,用戶做出了選擇,程序就可以根據(jù)該需求去創(chuàng)建對應(yīng)的工廠對象,最終將選擇的具體產(chǎn)品生產(chǎn)出來。

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

相關(guān)文章:

  • 怎么用2013做網(wǎng)站谷歌廣告上海有限公司官網(wǎng)
  • 網(wǎng)站轉(zhuǎn)app免費(fèi)百度搜索風(fēng)云榜小說總榜
  • 營銷型網(wǎng)站收費(fèi)搜狗登錄入口
  • WordPress采集中文永久免費(fèi)版下載單頁關(guān)鍵詞優(yōu)化費(fèi)用
  • 自己怎樣做淘客網(wǎng)站91永久免費(fèi)海外地域網(wǎng)名
  • 最好網(wǎng)站建設(shè)公司排名寧波優(yōu)化網(wǎng)頁基本流程
  • 虛擬資源站碼支付wordpress全網(wǎng)營銷推廣公司
  • 淄博網(wǎng)站建設(shè)-中國互聯(lián)中小企業(yè)管理培訓(xùn)班
  • 西城專業(yè)網(wǎng)站建設(shè)公司哪家好如何進(jìn)行網(wǎng)站性能優(yōu)化
  • 網(wǎng)站整站下載帶數(shù)據(jù)庫后臺的方法濟(jì)南百度競價(jià)開戶
  • 想自己做網(wǎng)站嗎培訓(xùn)班有哪些課程
  • 專門做app的原型網(wǎng)站付費(fèi)推廣平臺有哪些
  • 科技公司網(wǎng)站設(shè)計(jì)公司深圳優(yōu)化公司義高粱seo
  • 網(wǎng)站沒完善做cdn的后果吸引人氣的營銷方案
  • 泰安有口碑的企業(yè)建站公司免費(fèi)推廣軟件
  • 專做美容師招聘網(wǎng)站網(wǎng)絡(luò)管理系統(tǒng)
  • 響應(yīng)式網(wǎng)站建設(shè)推廣百度推廣銷售員的工作內(nèi)容
  • 成都科技網(wǎng)站建設(shè)電話多少公司網(wǎng)站制作要多少錢
  • 那家財(cái)經(jīng)網(wǎng)站做的好2020十大網(wǎng)絡(luò)熱詞
  • 成功案例 網(wǎng)站網(wǎng)站推廣平臺有哪些
  • 網(wǎng)站建設(shè)獨(dú)立高端網(wǎng)站建設(shè)制作
  • 做國外市場哪個(gè)網(wǎng)站好口碑營銷成功案例有哪些
  • 淄博周村網(wǎng)站建設(shè)哪家好杭州網(wǎng)絡(luò)推廣
  • 做網(wǎng)站設(shè)計(jì)提成賺錢嗎百度百度一下官網(wǎng)
  • 動(dòng)態(tài)網(wǎng)站開發(fā)心得體會百度推廣后臺登陸官網(wǎng)
  • 漳州網(wǎng)站建設(shè)點(diǎn)擊博大選百度云
  • 第3章營銷型企業(yè)網(wǎng)站建設(shè)開魯seo網(wǎng)站
  • 2020年新聞大事件長春網(wǎng)站seo公司
  • 蘭州網(wǎng)站建設(shè)公司排名網(wǎng)絡(luò)營銷推廣的渠道有哪些
  • 上海閔行區(qū)租房價(jià)格杭州seo搜索引擎優(yōu)化