您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“java設(shè)計模式學(xué)習(xí)之工廠方法模式如何實現(xiàn)”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“java設(shè)計模式學(xué)習(xí)之工廠方法模式如何實現(xiàn)”這篇文章吧。
工廠方法模式(Factory Method):定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。
工廠方法模式結(jié)構(gòu)圖:
項目需求,創(chuàng)建一個雷鋒工廠,大學(xué)生可以去幫助別人,志愿者也可以幫助別人做事情。
1:創(chuàng)建一個雷鋒類,具有幫助別人掃地,洗衣,買米的功能。
package FactoryMethodModel; public class LeiFeng { public void Sweep(){ System.out.println("掃地"); } public void Wash(){ System.out.println("洗衣"); } public void BuyRice(){ System.out.println("買米"); } }
2:創(chuàng)建一個學(xué)雷鋒的大學(xué)生的類,繼承雷鋒類,可增加自己的功能。
package FactoryMethodModel; /** * 學(xué)雷鋒的大學(xué)生 * @author 我不是張英俊 * */ public class UniversityStudent extends LeiFeng { //里面可以增加專屬大學(xué)生的功能 }
3:創(chuàng)建一個社區(qū)志愿者的類,繼承雷鋒類。
package FactoryMethodModel; /** * 學(xué)雷鋒的社區(qū)人員 * @author 我不是張英俊 * */ public class Volunteer extends LeiFeng { }
4:創(chuàng)建一個雷鋒工廠接口。
package FactoryMethodModel; /**雷鋒工廠的總接口。 * @author 我不是張英俊 * */ interface LeiFengFactory { LeiFeng CreatLenFeng(); }
5:創(chuàng)建學(xué)雷鋒的大學(xué)生的工廠。
package FactoryMethodModel; /** * 學(xué)雷鋒的大學(xué)生工廠 * @author 我不是張英俊 * */ public class UniversityStudentFactory implements LeiFengFactory { @Override public LeiFeng CreatLenFeng() { return new UniversityStudent(); } }
6:創(chuàng)建學(xué)雷鋒的志愿者工廠。
package FactoryMethodModel; /** * 學(xué)雷鋒的社區(qū)制志愿者 * @author 我不是張英俊 * */ public class VolunteerFactory implements LeiFengFactory { @Override public LeiFeng CreatLenFeng() { // TODO Auto-generated method stub return new Volunteer(); } }
7:測試類
package FactoryMethodModel; /** * 建立一個雷鋒工廠,大學(xué)生可以以雷鋒的名義起幫助別人,社區(qū)志愿者也可以。 * 工廠化模式:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。 * 工廠方法使一個類的實例化延遲到其子類。 * @author 我不是張英俊 * */ public class Test { public static void main(String[] args) { LeiFengFactory factory=new UniversityStudentFactory(); LeiFeng student =factory.CreatLenFeng(); student.BuyRice(); student.Sweep(); student.Wash(); } }
8:控制臺
買米
掃地
洗衣
總結(jié):簡單工廠方法違背了開放-封閉原則,而工廠方法克服了此問題,當(dāng)需要增加新的,例如小學(xué)生學(xué)雷鋒的時候,工廠方法增加新的小學(xué)生工廠即可,然后再測試類中調(diào)用即可。
工廠方法模式還保持了封裝對象創(chuàng)建過程的有點。使得要更換對象的時候,不需要做打的改動就可以實現(xiàn),降低了客戶程序與產(chǎn)品對象的耦合,工廠方法模式是簡單工廠模式的進(jìn)一步抽象和推廣。由于使用了多態(tài)性,工廠模式保存了簡單工廠模式的有點,并且克服了缺點。但缺點是,沒增加一個產(chǎn)品,就必須增加一個工廠類,增加的額外的開發(fā)量。
以上是“java設(shè)計模式學(xué)習(xí)之工廠方法模式如何實現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。