动物类型及子类型:
package factory_method_mode; /** * 动物类型 */ public interface Animal { /** * 发声 */ void say(); } /** * 猫 */ class Cat implements Animal { @Override public void say() { System.out.println("喵喵!"); } } /** * 狗 */ class Dog implements Animal { @Override public void say() { System.out.println("旺旺!"); } }
动物工厂类型:
package factory_method_mode; /** * 动物工厂类型 */ public interface AnimalFactory { /** * 创建动物 */ Animal createAnimal(); }
猫工厂类:
package factory_method_mode; /** * 猫工厂类 */ public class CatFactory implements AnimalFactory { /** * 创建猫 */ @Override public Animal createAnimal() { return new Cat(); } }
狗工厂类:
package factory_method_mode; /** * 狗工厂类 */ public class DogFactory implements AnimalFactory { /** * 创建狗 */ @Override public Animal createAnimal() { return new Dog(); } }
类图:
测试类:
package factory_method_mode; public class Client { public static void main(String[] args) { //根据设计理论建议: 使用工厂方法模式. 但实际上, 我们一般都用简单工厂模式 //虽然符合了开闭原则, 但类会增多 Animal c2 = new CatFactory().createAnimal(); Animal d2 = new DogFactory().createAnimal(); c2.say(); d2.say(); } }
打印结果:
喵喵!
旺旺!
谢谢声明出处!
转自: http://www.cnblogs.com/gscq073240/articles/7127712.html