日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

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

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

場景:

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


定義:

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

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

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


角色:

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

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

? ??

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

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:工廠,選擇合適的實(shí)現(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)部主要的實(shí)現(xiàn)功能是選擇合適的實(shí)現(xiàn)類。也就是需要一個(gè)選擇條件或者參數(shù),通常來源有三處

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

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

③.程序運(yùn)行期的某個(gè)值,比如從緩存中獲取的值。

優(yōu)點(diǎn):

封裝解耦

缺點(diǎn):

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

不方便擴(kuò)展。

思考:

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






?

轉(zhuǎn)載于:https://www.cnblogs.com/krislight1105/p/3748302.html

總結(jié)

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

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