Java工厂模式分为三种
1、简单工厂模式(又叫静态工厂模式)
代码:
package simplefactory; public interface Person { public void say(); }
?
package simplefactory; public class Chinese implements Person{ public void say() { System.out.println("I am Chinese."); } }
?
package simplefactory; public class Japanese implements Person { public void say() { System.out.println("I am Japanese."); } }
?
package simplefactory; public class PersonCreator { public Person createPerson(String type) { if (type.equals("chn")) { return new Chinese(); } if (type.equals("jpn")) { return new Japanese(); } return null; } }
?
package simplefactory; public class Test { public static void main(String[] args) { PersonCreator pc = new PersonCreator(); pc.createPerson("chn").say(); pc.createPerson("jpn").say(); } }
?2、抽象工厂模式
代码:
package factorymethod public abstract class AbstractFactory { public abstract Person create(); }
?
package factorymethod; public class Chinese extends Person{ public void say() { System.out.println("I am Chinese."); } }
?
package factorymethod; public class Japanese extends Person { public void say() { System.out.println("I am Japanese."); } }
?
package factorymethod; public interface AbstractFactory { public Person create(); }
?
package factorymethod; public class ChineseFactory implements AbstractFactory { public Person create() { return new Chinese(); } }
?
package factorymethod; public class JapaneseFactory implements AbstractFactory { public Person create() { return new Japanese(); } }
?
package factorymethod; public class Test { public static void main(String[] args) { ChineseFactory cf = new ChineseFactory(); cf.create().say(); JapaneseFactory jf = new JapaneseFactory(); jf.create().say(); } }
?3、抽象工厂模式
代码:
package abstractfactory; public interface Person { public void say(); }
?
package abstractfactory; public class Chinese implements Person{ public void say() { System.out.println("I am Chinese."); } }
?
package abstractfactory; public class Japanese implements Person { public void say() { System.out.println("I am Japanese."); } }
?
package abstractfactory; public abstract class AbstractFactory { public abstract Chinese createChinese(); public abstract Japanese createJapanese(); }
?
package abstractfactory; public class DefaultFactory extends AbstractFactory{ public Chinese createChinese() { return new Chinese(); } public Japanese createJapanese() { return new Japanese(); } }
?
package abstractfactory; public class Test { public static void main(String[] args) { AbstractFactory af = new DefaultFactory(); af.createChinese().say(); af.createJapanese().say(); } }
?
原文:http://zhaojian0910.iteye.com/blog/2188886