您的位置:首页 > 其它

《大话设计模式》--工厂方法模式

2017-08-24 16:02 232 查看
题目:大学生和志愿者学雷锋,轮流去给孤寡老人送爱心





public class LeiFeng {
public void sweep() {
System.out.println("扫地");
}

public void wash() {
System.out.println("洗衣");
}

public void buyRice() {
System.out.println("买米");
}

}


public class UnderGraduate extends LeiFeng {}

public class Volunteer extends LeiFeng {}


public interface IFactory {
LeiFeng createLeiFeng();
}


public class UnderGraduateFactory implements IFactory {
@Override
public LeiFeng createLeiFeng() {
return new UnderGraduate();
}
}

public class VolunteerFactory implements IFactory {
@Override
public LeiFeng createLeiFeng() {
return new Volunteer();
}
}


public class Test {
public static void main(String args[]) {
IFactory factory = new PoliceFactory();
LeiFeng student = factory.createLeiFeng();
student.sweep();
student.wash();
student.buyRice();
}
}


工厂类和方法类都要分别继承,工厂类用于生成新的对象。如果再加一个警察类,只需要下面这样做就可以了:

public class Police extends LeiFeng {}

public class PoliceFactory implements IFactory {
@Override
public LeiFeng createLeiFeng() {
return new Police();
}
}


不需要动服务端,只需要在客户端Test中增加new PoliceFactory()就可以了

工厂方法模式和简单工厂模式的区别:

简单工厂模式只有一个工厂类,里面通过switch...case判断生成什么对象,如果增加了新的判断,就要修改服务端了,违背了开放-闭合原则。工厂方法模式有效的解决了这一问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: