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

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

九江做網(wǎng)站開發(fā)需要多少錢班級優(yōu)化大師網(wǎng)頁版登錄

九江做網(wǎng)站開發(fā)需要多少錢,班級優(yōu)化大師網(wǎng)頁版登錄,psd轉(zhuǎn)wordpress模板,html火鍋網(wǎng)頁制作模板工廠模式介紹 工廠模式是我們最常用的實(shí)例化對象模式了,是用工廠方法代替new操作的一種模式。它是創(chuàng)建型模式。 簡單工廠 簡單工廠模式是指由一個工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例, 但它不屬于GOF 23種設(shè)計(jì)模式 簡單工廠適用于工廠類負(fù)責(zé)創(chuàng)建的對象較少的場景,…

工廠模式介紹

工廠模式是我們最常用的實(shí)例化對象模式了,是用工廠方法代替new操作的一種模式。它是創(chuàng)建型模式。

簡單工廠

簡單工廠模式是指由一個工廠對象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例, 但它不屬于GOF 23種設(shè)計(jì)模式

簡單工廠適用于工廠類負(fù)責(zé)創(chuàng)建的對象較少的場景, 且客戶端只需要傳入工廠類的參數(shù), 對于如何創(chuàng)建對象的邏輯不需要關(guān)心

適用場景: 工廠類負(fù)責(zé)創(chuàng)建的對象較少 對于如何創(chuàng)建對象的邏輯不需要關(guān)心

優(yōu)點(diǎn): 只需要傳入一個正確的參數(shù) 就可以獲取所需要的對象 無需知道創(chuàng)建細(xì)節(jié)

缺點(diǎn): 違背開閉原則 不易于擴(kuò)展過于復(fù)雜的產(chǎn)品結(jié)構(gòu) 新增產(chǎn)品需要修改工廠類的代碼

以下我們用支付場景演示簡單工廠用法

1.定義支付接口

/*** 支付接口** @author Lion Li*/
public interface IPay {void payment();
}

2.編寫工廠實(shí)例

/*** 付款方式工廠** @author Lion Li*/
public class PayFactory {/*** 創(chuàng)建付款實(shí)例* Class<? extends IPay> 單一原則 限制必須是 IPay 的子類*/public IPay create(Class<? extends IPay> clazz) {if (null != clazz) {try {return clazz.newInstance();} catch (Exception e) {throw new RuntimeException(e);}}return null;}}

3.編寫具體的支付類 例如: 微信 支付寶

/*** 微信支付** @author Lion Li*/
public class WxPay implements IPay {public void payment() {System.out.println("微信支付");}
}
/*** 支付寶支付** @author Lion Li*/
public class ZfbPay implements IPay {public void payment() {System.out.println("支付寶支付");}
}

4.編寫測試類并運(yùn)行測試

/*** @author Lion Li*/
public class Test {public static void main(String[] args) {IPay wx = new PayFactory().create(WxPay.class);IPay zfb = new PayFactory().create(ZfbPay.class);wx.payment();zfb.payment();}
}

工廠方法模式

工廠方法模式是指定義一個創(chuàng)建對象的接口, 但讓實(shí)現(xiàn)這個接口的類來覺得實(shí)例化哪個類, 工廠方法讓類的實(shí)例化推遲到子類中進(jìn)行

適用場景: 創(chuàng)建對象需要大量重復(fù)的代碼 不依賴于產(chǎn)品類實(shí)例如何被創(chuàng)建 實(shí)現(xiàn)等細(xì)節(jié)

優(yōu)點(diǎn): 用戶只需要關(guān)心所需要產(chǎn)品對應(yīng)的工廠 無需關(guān)心創(chuàng)建細(xì)節(jié) 加入新產(chǎn)品符合開閉原則 提供了系統(tǒng)的可擴(kuò)展性

缺點(diǎn): 類的個數(shù)容易過多 增加的代碼的結(jié)構(gòu)負(fù)責(zé)都 增加了系統(tǒng)的抽象性和理解難度

以下我們用汽車場景工廠方法模式用法

1.定義汽車接口規(guī)范

/*** 汽車接口規(guī)范** @author Lion Li*/
public interface ICar {void name();
}

2.編寫汽車工廠接口規(guī)范

/*** 汽車工廠接口規(guī)范** @author Lion Li*/
public interface ICarFactory {ICar create();
}

3.編寫具體的汽車種類 例如: 寶馬 大眾

/*** 寶馬汽車** @author Lion Li*/
public class BaoMaCar implements ICar {public void name() {System.out.println("我是寶馬");}
}
/*** 大眾汽車** @author Lion Li*/
public class DaZhongCar implements ICar {public void name() {System.out.println("我是大眾");}
}

4.編寫具體的汽車工廠 例如: 寶馬工廠 大眾工廠

/*** 寶馬汽車工廠** @author Lion Li*/
public class BaoMaCarFactory implements ICarFactory {public ICar create() {return new BaoMaCar();}
}
/*** 大眾汽車工廠** @author Lion Li*/
public class DaZhongCarFactory implements ICarFactory {public ICar create() {return new DaZhongCar();}
}

5.編寫測試類并運(yùn)行測試

/*** @author Lion Li*/
public class Test {public static void main(String[] args){ICarFactory baomaFactory = new BaoMaCarFactory();ICar baoma = baomaFactory.create();baoma.name();ICarFactory dazhongFactory = new DaZhongCarFactory();ICar dazhong = dazhongFactory.create();dazhong.name();}}

抽象工廠

抽象工廠模式是指提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口 無需指定他們具體的類

適用場景:

  1. 不依賴于產(chǎn)品類實(shí)例如何被創(chuàng)建等細(xì)節(jié) 強(qiáng)調(diào)一系列相關(guān)產(chǎn)品對象一起使用創(chuàng)建對象需要大量重復(fù)的代碼
  2. 提供一個產(chǎn)品類的庫 所有產(chǎn)品以同樣的接口出現(xiàn) 從而不依賴于具體的實(shí)現(xiàn)

優(yōu)點(diǎn): 具體產(chǎn)品在應(yīng)用層代碼隔離 無需關(guān)心創(chuàng)建細(xì)節(jié) 將一個系列的產(chǎn)品統(tǒng)一到一起創(chuàng)建

缺點(diǎn): 規(guī)定了所有可能被創(chuàng)建的產(chǎn)品集合 產(chǎn)品中擴(kuò)展新產(chǎn)品困難 需要修改抽象工廠的接口 增加了系統(tǒng)的理解難度和抽象性

以下我們用多種出行方式來演示抽象工廠用法

1.定義產(chǎn)品接口規(guī)范

/*** 汽車接口規(guī)范** @author Lion Li*/
public interface ICar {void name();
}
/*** 飛機(jī)接口規(guī)范** @author Lion Li*/
public interface IAircraft {void name();
}

2.定義產(chǎn)品工廠接口規(guī)范

/*** 汽車工廠接口規(guī)范** @author Lion Li*/
public interface ICarFactory {ICar create();
}
/*** 飛機(jī)工廠接口規(guī)范** @author Lion Li*/
public interface IAircraftFactory {IAircraft create();
}

3.定義所有產(chǎn)品實(shí)現(xiàn)

/*** 寶馬汽車** @author Lion Li*/
public class BaoMaCar implements ICar {public void name() {System.out.println("我是寶馬");}
}
/*** 大眾汽車** @author Lion Li*/
public class DaZhongCar implements ICar {public void name() {System.out.println("我是大眾");}
}
/*** 波音飛機(jī)** @author Lion Li*/
public class BoYinAircraft implements IAircraft {public void name() {System.out.println("我是波音");}
}
/*** 空客飛機(jī)** @author Lion Li*/
public class KongKeAircraft implements IAircraft {public void name() {System.out.println("我是空客");}
}

4.定義所有產(chǎn)品工廠實(shí)現(xiàn)

/*** 寶馬汽車工廠** @author Lion Li*/
public class BaoMaCarFactory implements ICarFactory {public ICar create() {return new BaoMaCar();}
}
/*** 大眾汽車工廠** @author Lion Li*/
public class DaZhongCarFactory implements ICarFactory {public ICar create() {return new DaZhongCar();}
}
/*** 波音飛機(jī)工廠** @author Lion Li*/
public class BoYinAircraftFactory implements IAircraftFactory {public IAircraft create() {return new BoYinAircraft();}
}
/*** 空客飛機(jī)工廠** @author Lion Li*/
public class KongKeAircraftFactory implements IAircraftFactory {public IAircraft create() {return new KongKeAircraft();}
}

5.定義交通工具抽象工廠

/*** 交通工具抽象工廠** @author Lion Li*/
public abstract class TransportationFactory {public void init() {System.out.println("初始化數(shù)據(jù)");}protected abstract ICar createCar(Class<? extends ICarFactory> clazz);protected abstract IAircraft createAircraft(Class<? extends IAircraftFactory> clazz);
}

6.定義出行方式工廠

/*** 出行方式工廠** @author Lion Li*/
public class TravelFactory extends TransportationFactory {@Overrideprotected ICar createCar(Class<? extends ICarFactory> clazz) {super.init();if (null != clazz) {try {return clazz.newInstance().create();} catch (Exception e) {throw new RuntimeException(e);}}return null;}@Overrideprotected IAircraft createAircraft(Class<? extends IAircraftFactory> clazz) {super.init();if (null != clazz) {try {return clazz.newInstance().create();} catch (Exception e) {throw new RuntimeException(e);}}return null;}
}

7.編寫測試類并運(yùn)行測試

/*** @author Lion Li*/
public class Test {public static void main(String[] args){TransportationFactory factory = new TravelFactory();ICar baoma = factory.createCar(BaoMaCarFactory.class);baoma.name();ICar dazhong = factory.createCar(DaZhongCarFactory.class);dazhong.name();IAircraft boyin = factory.createAircraft(BoYinAircraftFactory.class);boyin.name();IAircraft kongke = factory.createAircraft(KongKeAircraftFactory.class);kongke.name();}}

Spring 工廠 BeanFactory 解析

這里由于網(wǎng)上已經(jīng)有很多成熟的解析文檔 就不多做介紹了

推薦文章鏈接: Spring 的工廠模式 BeanFactory 是什么源碼刨析

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

相關(guān)文章:

  • 外貿(mào)網(wǎng)站用什么語言百度廣告推廣平臺
  • 實(shí)體門店管理系統(tǒng)武漢seo公司排名
  • 如何查看網(wǎng)站在哪里做的會計(jì)培訓(xùn)班有用嗎
  • 獲獎設(shè)計(jì)網(wǎng)站怎么做ppt
  • 做網(wǎng)站需要材料北京專業(yè)網(wǎng)站優(yōu)化
  • 怎樣在設(shè)計(jì)網(wǎng)站做圖賺錢嗎投稿平臺
  • 青島網(wǎng)絡(luò)推廣選哪家seo推廣宣傳
  • 成都設(shè)計(jì)研究院北京seo產(chǎn)品
  • 蘇州網(wǎng)頁服務(wù)開發(fā)與網(wǎng)站建設(shè)鳳凰網(wǎng)臺灣資訊
  • 阿里云注銷網(wǎng)站什么是長尾關(guān)鍵詞舉例
  • 權(quán)威的網(wǎng)站建設(shè)網(wǎng)絡(luò)銷售是做什么的
  • 南寧網(wǎng)站建設(shè) 南寧聯(lián)達(dá)億seo優(yōu)化網(wǎng)站源碼
  • 現(xiàn)在怎么做網(wǎng)絡(luò)營銷推廣方法網(wǎng)站的優(yōu)化seo
  • 北京 做網(wǎng)站 公司微信公眾號小程序怎么做
  • 注重網(wǎng)站內(nèi)容維護(hù)百度推廣賬號怎么申請
  • 電子產(chǎn)品營銷策劃書seo優(yōu)化易下拉霸屏
  • 重慶網(wǎng)絡(luò)網(wǎng)站推廣網(wǎng)絡(luò)營銷公司排行榜
  • 開通網(wǎng)站必須做域名空間營銷方法有哪些方式
  • 怎么更改網(wǎng)站域名搜索引擎推廣實(shí)訓(xùn)
  • 瀏陽做網(wǎng)站報(bào)價(jià)簡述如何優(yōu)化網(wǎng)站的方法
  • 網(wǎng)站越來越難做班級優(yōu)化大師免費(fèi)下載
  • 常德投訴網(wǎng)站經(jīng)典品牌推廣文案
  • 做網(wǎng)站的語言智慧營銷系統(tǒng)平臺
  • 17zwd一起做業(yè)網(wǎng)站做網(wǎng)站的公司有哪些
  • 公明網(wǎng)站建設(shè)seo網(wǎng)站有優(yōu)化培訓(xùn)班嗎
  • c 做的網(wǎng)站怎么上傳圖片廣告公司網(wǎng)站
  • 現(xiàn)在個人做網(wǎng)站還能盈利嗎百度400電話
  • 網(wǎng)站建設(shè)北京貴武安百度seo
  • 騰訊 微商 網(wǎng)站 建設(shè)青島神馬排名優(yōu)化
  • 一個人做商城網(wǎng)站網(wǎng)頁開發(fā)培訓(xùn)網(wǎng)