public interface Animal {
/**所有动物都会吃*/ public void eat(); }
public class Tiger implements Animal {
public void eat() {
System.out.println("老虎要吃饭!"); }
public void run() {
System.out.println("老虎要跑步!"); } }
public class Parrot implements Animal {
public void eat() {
// TODO Auto-generated method stub System.out.println("鹦鹉要吃饭"); }
public void fly() {
System.out.println("鹦鹉要飞翔"); } }
public class sampleFactory {
public static int i = 0;
public static Animal createAnimal(String animalName)
throws ClassNotFoundException, InstantiationException, IllegalAccessException { i++; System.out.println(i); Class c = Class.forName(animalName); Animal animal = (Animal) c.newInstance(); return animal; } }
public class Client {
/**
* @param args * @throws IllegalAccessException * @throws InstantiationException * @throws ClassNotFoundException */ public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { // TODO Auto-generated method stub Animal animal = sampleFactory.createAnimal("Tiger"); animal.eat(); Tiger tiger = (Tiger) animal;
tiger.run();
animal = sampleFactory.createAnimal("Dolphin"); animal.eat();
animal = sampleFactory.createAnimal("Parrot");
animal.eat(); }
}
优点:客户端不再负责对象创建, 把这个责任丢给了具体的工厂类
缺点:1、由于简单工厂使用静态方法创建对象,导致静态方法无法被继承;2、当具体产品增多时候,客户端需要不同的方式创建具体产品,需要不断修改工厂类;
|
sampleFactory
最新推荐文章于 2024-09-13 08:40:27 发布