簡單工廠模式
簡單工廠模式分為三種:普通簡單工廠、多方法簡單工廠、靜態方法簡單工廠,
普通工廠模式
最近看了老酒館電視劇,深深被陳懷海他們的情懷所感動,當然里面也有很多的酒,比如扳倒井,悶倒驢,跑舌頭,吹破天,二閨女,枕頭親,我們以酒為例:
創建酒的介面:
public interface Liqueur { public void taste();//酒味}
創建實作類:
(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 public class MakeLiqueurFactory { 2 3 /** 4 * 制造悶倒驢和跑舌頭 5 */ 6 public Liqueur make(String type){ 7 if ("mdl".equalsIgnoreCase(type)){ 8 return new Mdl(); 9 }else if ("pst".equalsIgnoreCase(type)){10 return new Pst();11 }else {12 return null;13 }14 }15 }
測驗:
1 public class LiqueurTest { 2 3 public static void main(String[] args){ 4 MakeLiqueurFactory factory = new MakeLiqueurFactory(); 5 Liqueur mdl = factory.make("mdl"); 6 mdl.taste(); 7 Liqueur pst = factory.make("pst"); 8 pst.taste(); 9 }10 }
多方法簡單工廠
在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確創建物件,而多個工廠方法模式是提供多個工廠方法,分別創建物件,
1 public class MakeLiqueurFactory { 2 3 /** 4 * 制造悶倒驢 5 */ 6 public Liqueur makeMdl(){ 7 return new Mdl(); 8 } 9 10 /**11 * 制造跑舌頭12 */13 public Liqueur makePst(){14 return new Pst();15 }16 }
測驗:
1 public class LiqueurTest { 2 3 public static void main(String[] args){ 4 MakeLiqueurFactory factory = new MakeLiqueurFactory(); 5 Liqueur mdl = factory.makeMdl(); 6 mdl.taste(); 7 Liqueur pst = factory.makeMdl(); 8 pst.taste(); 9 }10 }
靜態方法簡單工廠
將上面的多個工廠方法模式里的方法置為靜態的,不需要創建實體,直接呼叫即可,
1 public class MakeLiqueurFactory { 2 3 /** 4 * 制造悶倒驢 5 */ 6 public static Liqueur makeMdl(){ 7 return new Mdl(); 8 } 9 10 /**11 * 制造跑舌頭12 */13 public static Liqueur makePst(){14 return new Pst();15 }16 }
測驗:
1 public class LiqueurTest {2 3 public static void main(String[] args){4 Liqueur mdl = MakeLiqueurFactory.makeMdl();5 mdl.taste();6 Liqueur pst = MakeLiqueurFactory.makePst();7 pst.taste();8 }9 }
結果都是如下所示:
1 我是悶倒驢,辣的!2 我是跑舌頭,苦的!
在以上的三種模式中,第一種如果傳入的字串有誤,不能正確創建物件,第三種相對于第二種,不需要實體化工廠類,所以,大多數情況下,我們會選用第三種——靜態工廠方法模式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/39964.html
標籤:設計模式
上一篇:通俗易懂設計模式決議——策略模式
