UML图
代码结构图
书中72页的UML图中运算类是abstract类型,但是在实现时LeiFeng类却不写成abstract,我觉得可能是个错误,这里写了abstract
public class Client {
public static void main(String[] args) {
IFactory factory = new UndergrateFactory();
LeiFeng student = factory.createLeiFeng();
student.sweep();
}
}
public interface IFactory {
LeiFeng createLeiFeng();
}
public abstract class LeiFeng {
public abstract void sweep();
}
public class Undergraduate extends LeiFeng {
@Override
public void sweep() {
System.out.println("学雷锋的大学生扫地");
}
}
public class UndergrateFactory implements IFactory {
@Override
public LeiFeng createLeiFeng() {
return new Undergraduate();
}
}
public class Volunteer extends LeiFeng {
@Override
public void sweep() {
System.out.println("志愿者扫地");
}
}
public class VolunteerFactory implements IFactory {
@Override
public LeiFeng createLeiFeng() {
return new Volunteer();
}
}
工厂模式一共有三种:简单工厂、工厂方法、抽象工厂模式
简单工厂是只有一个工厂,用工厂类来实例化对象,比较简单,工厂方法模式一个工厂只生产一个产品,抽象工厂模式是产品族的概念,一个工厂生产多个产品。