代码实例
abstract class AbstractPersonFactory {
private Person person;
// 工厂方法,在具体子类实现
abstract public Person createPerson();
public void boo() {
// 具体类型由工厂方法指定
person = createPerson();
person.foo();
}
}
/**
* 工厂子类
*/
class StudentFactory extends AbstractPersonFactory {
// 决定创建的对象
@Override
public Person createPerson() {
return new Student();
}
// 测试
public static void main(String[] args) {
StudentFactory studentFactory = new StudentFactory();
studentFactory.boo();
}
}
class Person {
public void foo() {
System.out.println("I am a person");
}
}
class Teacher extends Person {
@Override
public void foo() {
System.out.println("I am a teacher");
}
}
class Student extends Person {
@Override
public void foo() {
System.out.println("I am a student");
}
}
原文:https://www.cnblogs.com/bosslv/p/11361955.html