日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

策略模式与简单工厂模式区别(转)

發布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 策略模式与简单工厂模式区别(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

最近一直在抽時間研究設計模式,之前對設計模式也有一定的了解,但是都沒有平心靜氣的去研究過,只是了解了一些皮毛,最近打算再深入研究一下,重新打開了設計模式的數據,對之前的疑問一個個的刨根問底,今天看了簡單工廠模式和策略模式看的人有點小暈,兩個的大概思路沒有怎么變,都是通過多態去減少代碼的耦合度,怎么看兩個都是如出一轍,最后終于找到了兩個的本質區別,在此和大家分享下:

先上代碼:

簡單工廠模式:

//抽象類
abstract class AbsClass
{
??? //抽象方法:提供一些列的算法操作
??? public abstract?void acceptCash(string org);
}

//繼承自抽象類
class A:AbsClass
{
??? //具體方法:提供一些列的算法操作
??? public override double acceptCash(string org)

???????? Console.WriterLine("A類方法");

??}
}

?

//繼承自抽象類
class B:AbsClass
{
??? //具體方法:提供一些列的算法操作
??? public override double acceptCash(string org)

???????? Console.WriterLine("B類方法");

? }
}

... .... ....

簡單工廠類

//現金收取工廠
class CashFactory
{
??? //根據條件返回相應的對象
??? public static?AbsClass createCashAccept(string type)
??? {
????????AbsClass cs = null;
??????? switch (type)
??????? {
??????????? case "A":
??????????????? cs = new Al();
??????????????? break;
??????????? case "B":
??????????????? cs = new B();
??????????????? break;
??????????? case "...":
??????????????? ........ ....
??????????????? break;
??????? }
??????? return cs;
??? }
}

?

客戶端調用:

/利用簡單工廠模式根據下拉選擇框,生成相應的對象
AbsClass?csuper = CashFactory.createCashAccept("A");

?

策略模式:

?前面的類沒有任何變化,只是把Factory變成了CaseContext策略類

//策略Context
class CashContext
{
??? //聲明一個現金收費父類對象
??? private?AbsClass cs;

??? //設置策略行為,參數為具體的現金收費子類(正常,打折或返利)
??? public CashContext(AbsClass csuper)
??? {
??????? this.cs = csuper;
??? }

??? //得到現金促銷計算結果(利用了多態機制,不同的策略行為導致不同的結果)
??? public double GetResult(double money)
??? {
??????? return cs.acceptCash(money);
??? }
}

?

客戶端調用:

AbsClass?cc = null;
?? switch (cbxType.SelectedItem.ToString())
??????????? {
??????????????? case "A":
????????????????????cc = new CashContext(new A());
??????????????????? break;
??????????????? case "B":
????????????????????cc = new CashContext(new B());
??????????????????? break;
??????????????? case "...":
????????????????????... ....
??????????????????? break;
??????????? }

最后概括總結一下:

策略模式和簡單工廠模式看起來非常相似,都是通過多態來實現不同子類的選取,這種思想應該是從程序的整體來看得出的。如果從使用這兩種模式的角度來看的話,我們會發現在簡單工廠模式中我們只需要傳遞相應的條件就能得到想要的一個對象,然后通過這個對象實現算法的操作。而策略模式,使用時必須首先創建一個想使用的類對象,然后將該對象最為參數傳遞進去,通過該對象調用不同的算法。在簡單工廠模式中實現了通過條件選取一個類去實例化對象,策略模式則將選取相應對象的工作交給模式的使用者,它本身不去做選取工作。

結合上面的代碼和下面的釋義不難看出,其實兩個的差別很微妙,Factory是直接創建具體的對象并用該對象去執行相應的動作,而Context將這個操作給了Context類,沒有創建具體的對象,實現的代碼的進一步封裝,客戶端代碼并不需要知道具體的實現過程。

上面是在網絡看到的一篇文章

下面加上我的理解:

1、按一般教程中出現的例子理解:

簡單工廠模式:傳條件進工廠類,工廠類就會返回一個對象給調用者,供調用者使用---最終給用戶使用的是工廠類返回的類

策略模式:創建一個Context類(可以看作是工廠模式中工廠類的代替品)的對象A,傳一個要使用的策略實例對象給A,然后使用A調用A中的某些方法---最終給用戶用的是Context類

簡單的說,工廠有進貨也有出貨,然后使用出貨。策略有進貨沒出貨,然后使用得貨者。

2、更準確理解:用戶是使用工廠類生產的對象(要求工廠類生產對象的類的對象)進行操作,而用戶是使用用戶自己傳給策略的對象進行操作。

簡單的說,工廠類的使用者需要不是自己創建的對象,策略模式中Context類的使用者需要的是自己創建的對象。

更簡單的說,工廠模式:我沒有,我需要你的。策略模式:我自己有,我用我自己的。


總結

以上是生活随笔為你收集整理的策略模式与简单工厂模式区别(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久性色精品国产免费观看 | 中文字幕在线视频不卡 | 国产一及片 | 少妇荡乳情欲办公室456视频 | 久色视频在线观看 | 国产日韩欧美在线 | 一区二区在线观看av | 同心兄弟| 国产激情av| 国产精品欧美一区二区三区 | 丁香六月婷婷综合 | 人妻丰满熟妇无码区免费 | 黄色aa视频 | 中文字幕乱码中文乱码b站 国产一区二区三区在线观看视频 | 亚洲天堂第一区 | 日韩在线视频观看 | 日批视频免费播放 | 一卡二卡三卡在线观看 | 男人天堂视频在线观看 | 草草色 | 日本成人激情视频 | 亚洲欧美日韩一区二区 | 日本打白嫩屁股视频 | 天天摸夜夜添狠狠添婷婷 | 国产视频亚洲 | 国产一级精品毛片 | 午夜a级片| 999久久久精品| 韩国性猛交╳xxx乱大交 | 人人97| 在线观看亚洲精品视频 | 97超碰在线免费观看 | 葵司免费一区二区三区四区五区 | 成人xxx | 奇米影视第四色首页 | 欧美一区二区区 | 日本大胆欧美人术艺术 | 亚洲巨乳av| yy6080久久 | 夏目彩春娇喘呻吟高潮迭起 | 别揉我奶头一区二区三区 | 日剧大尺度床戏做爰 | 久久久91视频| av中文字幕网站 | 精品无码av一区二区三区 | 深夜在线| 少妇超碰| 无码国模国产在线观看 | 亚洲精品在线观看免费 | 成人欧美性| 一区二区不卡视频在线观看 | 婷婷超碰 | 真实的国产乱xxxx在线 | 星空大象在线观看免费播放 | 亚洲伦理精品 | 大地av | 国产九色视频 | 爱情岛亚洲品质自拍极速福利网站 | 熟妇人妻av无码一区二区三区 | 天天射天天舔 | 久久亚洲精华国产精华液 | 99久久精品国产亚洲 | 加勒比视频在线观看 | 欧美另类极品videosbest最新版本 | 国内精久久久久久久久久人 | 久久久久www | jjzz黄色片| 性生活av | 欧美 日韩 国产 亚洲 色 | 国产婷婷一区二区 | 91第一页 | 欧美日韩一区二区三区不卡视频 | 无码人妻精品一区二区三区99v | 成了校长的性脔h文 | www久久久天天com | av激情网站| 夜色成人 | 日韩欧美一级大片 | 波多野结衣av在线观看 | 欧美情侣性视频 | 女同性做爰全过程 | 一区二区三区视频播放 | 午夜免费播放观看在线视频 | 亚洲三级在线视频 | 国产网红在线 | 国内精品国产三级国产aⅴ久 | 伊人影院网 | 日韩三级在线免费观看 | 亚洲激情午夜 | 欧美亚洲精品一区二区 | 亚洲黄a | 日韩极品少妇 | 色插综合| 大度亲吻原声视频在线观看 | 一区二区三区美女 | 国产福利91精品 | 日本亚洲视频 | 日韩av免费 | 久久99精品久久久久久 |