今天給大家介紹《Java極簡設(shè)計模式》的第02章,抽象工廠模式(AbstractFactoty),多一句沒有,少一句不行,用最簡短的篇幅講述設(shè)計模式最核心的知識,好了,開始今天的內(nèi)容。
提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體的類。
工廠模式是我們最常用的模式了,著名的Jive論壇 ,就大量使用了工廠模式,工廠模式在Java程序系統(tǒng)可以說是隨處可見。
為什么工廠模式是如此常用?因為工廠模式就相當于創(chuàng)建實例對象的new,我們經(jīng)常要根據(jù)類Class生成實例對象,如A a=new A() 工廠模式也是用來創(chuàng)建實例對象的,所以以后new時就要多個心眼,是否可以考慮實用工廠模式,雖然這樣做,可能多做一些工作,但會給你系統(tǒng)帶來更大的可擴展性和盡量少的修改量。
圖片
定義抽象工程類IAnimalFactory
public interface IAnimalFactory { /** * 定義創(chuàng)建Icat接口實例的方法 * @return */ ICat createCat(); /** * 定義創(chuàng)建IDog接口實例的方法 * @return */ IDog createDog();}
創(chuàng)建抽象工廠類的兩個實現(xiàn)類,WhiteAnimalFactory和BlackAnimalFactory
public class WhiteAnimalFactory implements IAnimalFactory { public ICat createCat() { return new WhiteCat(); } public IDog createDog() { return new WhiteDog(); }}
public class BlackAnimalFactory implements IAnimalFactory { @Override public ICat createCat() { return new BlackCat(); } public IDog createDog() { return new BlackDog(); }}
定義抽象工廠中要生產(chǎn)的抽象產(chǎn)品接口ICat和IDog
public interface ICat { /** * 定義方法 */ void eat();}
public interface IDog { /** * 定義方法 */ void eat();}
創(chuàng)建產(chǎn)品的實現(xiàn)類BlackCat、BlackDog、WhiteCat、WhiteDog
public class BlackCat implements ICat { @Override public void eat() { System.out.println("The black cat is eating!"); }}
public class BlackDog implements IDog { @Override public void eat() { System.out.println("The black dog is eating"); }}
public class WhiteCat implements ICat { @Override public void eat() { System.out.println("The white cat is eating!"); }}
public class WhiteDog implements IDog { @Override public void eat() { System.out.println("The white dog is eating!"); }}
定義一個測試類Test
public class Test { public static void main(String[] args) { IAnimalFactory blackAnimalFactory = new BlackAnimalFactory(); ICat blackCat = blackAnimalFactory.createCat(); blackCat.eat(); IDog blackDog = blackAnimalFactory.createDog(); blackDog.eat(); IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory(); ICat whiteCat = whiteAnimalFactory.createCat(); whiteCat.eat(); IDog whiteDog = whiteAnimalFactory.createDog(); whiteDog.eat(); }}
The black cat is eating!The black dog is eatingThe white cat is eating!The white dog is eating!
由此可見,工廠方法確實為系統(tǒng)結(jié)構(gòu)提供了非常靈活強大的動態(tài)擴展機制,只要我們更換一下具體的工廠方法,系統(tǒng)其他地方無需一點變換,就有可能將系統(tǒng)功能進行改頭換面的變化。
本文鏈接:http://www.www897cc.com/showinfo-26-5195-0.html我們一起聊聊抽象工廠模式(AbstractFactoty)
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
下一篇: Go-Zero 是如何做路由管理的?