标签:
动物抽象类:publicabstract Animal { public abstract void eat(); }
工厂接口:publicinterface Factory {public abstract Animal createAnimal();}
具体狗类:publicclass Dog extends Animal {}
具体猫类:publicclass Cat extends Animal {}
开始,在测试类中每个具体的内容自己创建对象,但是,创建对象的工作如果比较麻烦,就需要有人专门做这个事情,所以就制造了一个专门的类来创建对象。发现每次修改(主要是后期添加)工厂代码太麻烦,用工厂方法改进,针对每一个具体的实现提供一个具体工厂。
狗工厂:publicclass DogFactoryimplements Factory {
public Animal createAnimal(){…}
}
猫工厂:publicclass CatFactoryimplements Factory {
public Animal createAnimal(){…}
}
package 创建型_工厂方法模式; public abstract class Animal { public abstract void eat(); }
package 创建型_工厂方法模式; public class Dog extends Animal { @Override public void eat() { System.out.println("狗吃肉"); } }
package 创建型_工厂方法模式; public class Cat extends Animal { @Override public void eat() { System.out.println("猫吃鱼"); } }
package 创建型_工厂方法模式; public interface Factory { public abstract Animal createAnimal(); }
package 创建型_工厂方法模式; //这个工厂主要造狗,但是别人不知道,因为是返回Animal public class DogFactory implements Factory { @Override public Animal createAnimal() { return new Dog(); } }专门创建猫工厂的CatFactory类:
package 创建型_工厂方法模式; //专门创建猫工厂 public class CatFactory implements Factory { @Override public Animal createAnimal() { return new Cat(); } }
package 创建型_工厂方法模式; public class AnimalMain { public static void main(String[] args) { //需求:我要买只狗 Factory factory = new DogFactory(); Animal animal = factory.createAnimal(); animal.eat(); System.out.println("------------"); //需求:我要买只猫 factory = new CatFactory();//要买猫的话,这里程序就把工厂给换成造猫的那个工厂了 animal = factory.createAnimal(); animal.eat(); } }
标签:
原文地址:http://blog.csdn.net/u012110719/article/details/45421873