摘要:簡單工廠模式工廠模式中包含三個(gè)角色工廠當(dāng)用戶需要一個(gè)產(chǎn)品的時(shí)候,報(bào)給工廠。抽象產(chǎn)品抽象對象就是相當(dāng)于一個(gè)奧特曼模型,但是奧特曼有很多,艾斯,賽文都是奧特曼。就要向總部工程發(fā)送帶艾斯的信息。現(xiàn)在想總部要艾斯奧特曼讓他使用奧特曼共有功能打怪獸
簡單工廠模式
工廠模式中包含三個(gè)角色
工廠
當(dāng)用戶需要一個(gè)A產(chǎn)品的時(shí)候,報(bào)給工廠。工廠便把A產(chǎn)品給于用戶。
抽象產(chǎn)品
抽象對象就是相當(dāng)于一個(gè)奧特曼模型,但是奧特曼有很多,艾斯,賽文都是奧特曼。但是把這些奧特曼整合起來就是一“奧特曼”
這一共有的名稱,或者說具有這個(gè)能力的都是“奧特曼”
具體產(chǎn)品
上面說到奧特曼是一個(gè)抽象出來的“產(chǎn)品”。那么艾斯奧特曼就是具體到唯一。當(dāng)打怪獸的時(shí)候,需要艾斯的時(shí)候。就要向總部(工程)
發(fā)送帶艾斯的信息。總部就會(huì)讓艾斯出來打怪獸
下面使用代碼來說明(抽象產(chǎn)品為收銀機(jī)收費(fèi);具體產(chǎn)品為正常收費(fèi) 打折收費(fèi) 滿300反50)
抽象產(chǎn)品類:收費(fèi)共有兩個(gè)功能 收錢和找錢
public abstract class AbstractCashSuper {
?
? ?/**
? ? * 所收到的錢
? ? */
? ?public double number;
?
? ?public double getNumber() {
? ? ? ?return number;
? }
?
? ?public void setNumber(double number) {
? ? ? ?this.number = number;
? }
?
? ?public abstract double acceptCash();
}
具體產(chǎn)品(打折) 打折類繼承了收銀機(jī)類 同樣具有收錢和找錢的功能
public class Discount extends AbstractCashSuper {
?
? ?public double discount;
? ?private double money;
? ?public Discount(double discount) {
? ? ? ?this.discount = discount;
? }
?
? ?@Override
? ?public double acceptCash() {
? ? ? ?money = getNumber();
? ? ? ?money = discount * money ;
? ? ? ?return money;
? }
}
-----其他兩個(gè)類就略
為了和工廠做一個(gè)對比,寫一個(gè)工具類 在使用不同的功能的時(shí)候 只需要傳入使用的名再在switch中就可以拿到這個(gè)對象
public class CashSuperUtiles {
?
? ?public static AbstractCashSuper oper(String str){
? ? ? ?AbstractCashSuper abstractCashSuper = null;
?
? ? ? ?switch (str){
? ? ? ? ? ?case "原價(jià)":
? ? ? ? ? ? ? ?abstractCashSuper = new Same();
? ? ? ? ? ? ? ?break;
?
? ? ? ? ? ?case "打八折":
? ? ? ? ? ? ? ?abstractCashSuper = new Discount(0.8);
? ? ? ? ? ? ? ?break;
?
? ? ? ? ? ?case "滿300返50":
? ? ? ? ? ? ? ?abstractCashSuper = new Rebate(300,50);
? ? ? ? ? ? ? ?break;
? ? ? }
?
? ? ? ?return abstractCashSuper;
? }
?
}
在main函數(shù)中
AbstractCashSuper 打八折 = CashSuperUtiles.oper("打八折");
打八折.setNumber(456);
double number = 打八折.acceptCash();
System.out.println(number+"");
通過傳入所對應(yīng)的名稱拿到對象,而這對象的功能是是子類繼承了父類所共有的
這樣便能使用功能的功能。不管是什么獨(dú)有的功能,但我們只需要共有的功能就可以
如果說我們只需要共有的功能,那么可以制造一個(gè)盒子。把所需要的產(chǎn)品丟入這個(gè)盒子里,而盒子拿到具體的產(chǎn)品之后就能
有它的獨(dú)有功能,而外部看到的確實(shí)共有功能
public class ContentSuperUtils {
? ?AbstractCashSuper abstractCashSuper = null;
? ?public ContentSuperUtils(AbstractCashSuper abstractCashSuper){
? ? ? ?this.abstractCashSuper = abstractCashSuper;
? }
?
? ?public void setMengey(double number){
? ? ? ?abstractCashSuper.setNumber(number);
? }
?
? ?public double getMengey(){
?
? ? ? ?return abstractCashSuper.acceptCash();
? }
}
main方法
ContentSuperUtils abstractCashSuper = new ContentSuperUtils(new Discount(0.8));
abstractCashSuper.setMengey(456);
double mengey = abstractCashSuper.getMengey();
System.out.println(mengey+"");
再用奧特曼的例子來說的話
ContentSuperUtils-----總部
AbstractCashSuper-----奧特曼
Discount----艾斯奧特曼
艾斯奧特曼有奧特曼打怪獸的功能,奧特曼有很多也都在總部。
現(xiàn)在想總部要艾斯奧特曼讓他使用奧特曼共有功能打怪獸
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70920.html
摘要:基于工廠角色和產(chǎn)品角色的多態(tài)性設(shè)計(jì)是工廠方法模式的關(guān)鍵。工廠方法模式之所以又被稱為多態(tài)工廠模式,是因?yàn)樗械木唧w工廠類都具有同一抽象父類。工廠方法模式總結(jié)工廠方法模式是簡單工廠模式的進(jìn)一步抽象和推廣。 JavaScript工廠模式 首先需要說一下工廠模式。工廠模式根據(jù)抽象程度的不同分為三種 簡單工廠模式 工廠方法模式 抽象工廠模式 1.簡單工廠模式 簡單工廠模式:又稱為靜態(tài)工廠方法...
摘要:不過怎么來說工廠方法模式是簡單工廠模式的升級版。其次,工廠模式是一種典型的解耦模式,迪米特法則在工廠模式中表現(xiàn)的尤為明顯。 工廠模式想必大家在開發(fā)過程中會(huì)經(jīng)常用到,顧名思義其就是作為一個(gè)工廠用來生產(chǎn)產(chǎn)品的,下面來簡單介紹幾種常見的工廠模式。 0x01 簡單工廠模式 1、類圖結(jié)構(gòu)showImg(/img/bVFf1t?w=531&h=278); 2、角色分類 工廠類:其內(nèi)部具有一點(diǎn)的判...
摘要:簡單工廠,工廠模式和抽象工廠。不要認(rèn)為簡單工廠是用就覺得一無是處,也不要覺得抽象工廠比較高大上就到處套。 工廠模式,實(shí)際上也會(huì)根據(jù)業(yè)務(wù)情景不同會(huì)有不同的實(shí)現(xiàn)方式。一般分為3種。簡單工廠,工廠模式和抽象工廠。顧名思義,這三種從簡單到抽象,名稱越來越高大上,實(shí)現(xiàn)方式肯定是越來越復(fù)雜 結(jié)論1:三種工廠的實(shí)現(xiàn)越來越復(fù)雜 簡單工廠 public class Factory { // 定義...
摘要:二簡單工廠模式組成工廠類工廠模式的核心,通過調(diào)用它來實(shí)現(xiàn)其他類的功能。三工廠方法模式利用工廠方法模式可以有效解決簡單工廠模式破壞開閉原則的問題。 一、概念 1、工廠模式分為三類:(1)簡單工廠模式:一個(gè)工廠創(chuàng)建所有產(chǎn)品(2)工廠方法模式:一個(gè)工廠方法創(chuàng)建一個(gè)產(chǎn)品(3)抽象工廠模式:一個(gè)工廠方法創(chuàng)建一類產(chǎn)品 2、創(chuàng)建型模式這種模式是指將實(shí)例的創(chuàng)建和使用分離開來,隱藏類實(shí)例的創(chuàng)建細(xì)節(jié),外界...
摘要:需要說明的是在設(shè)計(jì)模式一書中將工廠模式分為兩類工廠方法模式與抽象工廠模式,將簡單工廠模式看為工廠方法模式的一種特例,兩者歸為一類。工廠模式的作用工廠模式的作用封裝變化創(chuàng)建邏輯有可能變化,封裝成工廠類之后,創(chuàng)建邏輯的變更對調(diào)用者透明。1、什么是工廠模式Define an interface for creating an object,but let subclasses decide whi...
摘要:我認(rèn)為按書上的順序比較好理解因?yàn)楹唵戊o態(tài)工廠模式是在工廠方法模式上縮減,抽象工廠模式是在工廠方法模式上再增強(qiáng)。所以我就先講工廠方法模式了。抽象工廠模式抽象工廠模式就比較復(fù)雜了,我們一般的應(yīng)用都寫不到。 前言 只有光頭才能變強(qiáng) 回顧前面: 給女朋友講解什么是代理模式 包裝模式就是這么簡單啦 單例模式你會(huì)幾種寫法? 昨天寫了單例模式了,今天是時(shí)候?qū)懝S模式啦~ 工廠模式我個(gè)人認(rèn)為其實(shí)比...
閱讀 3096·2021-09-28 09:42
閱讀 3448·2021-09-22 15:21
閱讀 1122·2021-07-29 13:50
閱讀 3564·2019-08-30 15:56
閱讀 3367·2019-08-30 15:54
閱讀 1196·2019-08-30 13:12
閱讀 1172·2019-08-29 17:03
閱讀 1198·2019-08-29 10:59