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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式学习--------3.简单工厂模式学习

發(fā)布時間:2025/4/16 asp.net 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式学习--------3.简单工厂模式学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

場景:

? ? ? ?服務端編寫API方法供客戶端調(diào)用,需要將接口與實現(xiàn)分離,客戶端不需要知道具體實現(xiàn),高度解耦,面向接口的編程。


定義:

? ? ? ? 提供一個創(chuàng)建對象實例的功能,而無須關心其具體實現(xiàn),被創(chuàng)建實例的類型可以是接口,抽象類,也可以是具體的類。

類比就像我們?nèi)スS進貨,但是不知道具體貨物是如何產(chǎn)生的,可能從廣東進貨,也可能從北京進貨,原料的供貨商我們不清

楚,我們只向工廠要,工廠知道貨物從哪兒來,由工廠負責具體的調(diào)度,然后貨到了就給我們.


角色:

Api: 定義客戶所需要的功能接口??

package com.kris.study;public interface Api {public void operation(String s); }

? ??

Impl:具體實現(xiàn)Api的實現(xiàn)類,可能有多個

package com.kris.study;public class ImplA implements Api{@Overridepublic void operation(String s) {System.out.println("implA s :"+s);}}

?

package com.kris.study;public class ImplB implements Api{@Overridepublic void operation(String s) {System.out.println("ImplB s:"+s);}}


Factory:工廠,選擇合適的實現(xiàn)類來創(chuàng)建Api接口對象

package com.kris.study;public class Factory {enum Condition {IMPLA,IMPLB}public static Api createApi(Condition condition){Api api = null;if(condition == Condition.IMPLA){api = new ImplA();}else if (condition == Condition.IMPLB){api = new ImplB();}return api;} }


Client:客戶端,通過Factory來獲取Api接口對象,然后面向Api接口編程

package com.kris.study;import com.kris.study.Factory.Condition;public class Client {public static void main(String[] args) {Api api = Factory.createApi(Condition.IMPLA);api.operation("lisi");}}


原理分析:

簡單工廠內(nèi)部主要的實現(xiàn)功能是選擇合適的實現(xiàn)類。也就是需要一個選擇條件或者參數(shù),通常來源有三處

①.Client傳入,客戶端必須知道具體參數(shù)含義.

②.配置文件傳入,比如獲取XML中配置的實現(xiàn)類的名字通過反射得到具體實現(xiàn)類。

③.程序運行期的某個值,比如從緩存中獲取的值。

優(yōu)點:

封裝解耦

缺點:

增加了客戶端的復雜度,如果是Client傳入,Client端就需要具體的含義和對應的實現(xiàn)類.可以使用IOC配置文件傳入解決。

不方便擴展。

思考:

簡單工廠將變化的地方交給工廠Factory來處理,使客戶端和實現(xiàn)類解耦.難點在于如何選擇,也就是傳入?yún)?shù)的方式。






?

轉載于:https://www.cnblogs.com/krislight1105/p/3748302.html

總結

以上是生活随笔為你收集整理的设计模式学习--------3.简单工厂模式学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。