package 工厂方法模式;
//工厂方法模式
class LeiFeng{//雷锋
public void Sweep(){
System.out.println("雷锋扫地");
}
}
class Graduate extends LeiFeng{//学雷锋的大学生
public void Sweep(){
System.out.println("大学生扫地");
}
}
class Volunteer extends LeiFeng{//社区志愿者
public void Sweep(){
System.out.println("社区志愿者扫地");
}
}
//工厂方法模式本质也是用来选择实现的,和简单工厂区别在于,工厂方法把选择具体实现的功能延迟到子类中去实现
//雷锋工厂
interface Factory{//雷锋工厂接口
public LeiFeng FactoryMethod();
}
//学雷锋的大学生工厂
class GraduateFactory implements Factory{
public LeiFeng FactoryMethod(){
return new Graduate();
}
}
//社区志愿者工厂
class VolunteerFactory implements Factory{
public LeiFeng FactoryMethod(){
return new Volunteer();
}
}
public class TestClass {
public static void main(String[] args) {
Factory f=new GraduateFactory();//要换成社区志愿者,修改这里就可以
LeiFeng s=f.FactoryMethod();//调用工厂方法
s.Sweep();
}
}