工廠方法模式
簡單工廠模式有一個問題就是,類的創建依賴工廠類,
如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題,如何解決?
就用到工廠方法模式,創建一個工廠介面和創建多個工廠實作類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的代碼,
新建酒的介面:
1 public interface Liqueur {2 public void taste();//酒味3 }
新建工廠的介面:
1 public interface Make {2 /**3 * 造酒的介面,造不同的酒,回傳不同的酒味4 * @return Liqueur5 */6 public Liqueur makeLiqueur();7 }
創建酒的實作類:
(1)悶倒驢味道
1 public class Mdl implements Liqueur {2 @Override3 public void taste() {4 System.out.println("我是悶倒驢,辣的!");5 }6 }(2)跑舌頭味道
1 public class Pst implements Liqueur {2 @Override3 public void taste() {4 System.out.println("我是跑舌頭,苦的!");5 }6 }
創建工廠實作類:
(1)制造悶倒驢工廠
1 /** 2 * 制造悶倒驢工廠 3 */ 4 public class MakeMdlFactory implements Make{ 5 /** 6 * 制造悶倒驢 7 * @return 悶倒驢味道 8 */ 9 @Override10 public Liqueur makeLiqueur() {11 return new Mdl();12 }13 }(2)制造跑舌頭工廠
1 /** 2 * 制造跑舌頭工廠 3 */ 4 public class MakePstFactory implements Make { 5 /** 6 * 制造跑舌頭 7 * @return 跑舌頭味道 8 */ 9 @Override10 public Liqueur makeLiqueur() {11 return new Pst();12 }13 }
測驗:
1 public class LiqueurTest { 2 3 public static void main(String[] args){ 4 Make mdlFactory = new MakeMdlFactory(); 5 Liqueur mdl = mdlFactory.makeLiqueur(); 6 mdl.taste(); 7 8 Make pstFactory = new MakeMdlFactory(); 9 Liqueur pst = pstFactory.makeLiqueur();10 mdl.taste();11 }12 }
1 我是悶倒驢,辣的!2 我是悶倒驢,辣的!這個模式的好處就是,如果你想增加功能(增加一種酒叫二閨女),只需做一個實作類,實作Liqueur介面,同時做一個工廠類,實作Make介面,就OK了,
無需去改動現成的代碼,這樣做,拓展性較好!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/37772.html
標籤:設計模式
