测试类
package org.westos.常用的设计模式.工厂方法模式;
//这是一个工厂方法模式的测试类
/**
* 每一个具体类(继承于抽象类),都有一个特定了工厂类(该类是Factory接口的实现)用来创建该类对象
* */
public class Demo {
public static void main(String[] args) {
//创建一个工厂类对象,采用接口多态的形式
Factory f = new CatFactory();
//创建猫类对象
Animal c = f.createAnimal();
c.eat();
//更改f的堆内存地址值
f = new DogFactory();
Animal d = f.createAnimal();
d.eat();
}
}
抽象类
package org.westos.常用的设计模式.工厂方法模式;
public abstract class Animal {
public abstract void eat();
}
具体类
package org.westos.常用的设计模式.工厂方法模式;
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
package org.westos.常用的设计模式.工厂方法模式;
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
工厂接口
package org.westos.常用的设计模式.工厂方法模式;
public interface Factory {
public abstract Animal createAnimal();
}
工厂接口实现类
package org.westos.常用的设计模式.工厂方法模式;
public class CatFactory implements Factory {
@Override
public Animal createAnimal() {
return new Cat();
}
}
package org.westos.常用的设计模式.工厂方法模式;
public class DogFactory implements Factory {
@Override
public Animal createAnimal() {
return new Dog();
}
}