首页 > 其他 > 详细

工厂方法模式

时间:2017-06-17 09:37:17      阅读:248      评论:0      收藏:0      [点我收藏+]

简单工厂模式违背了"开放-封闭"原则(再添加控制类时在简单工厂类中要修改),工厂方法模式在添加控制类时,再添加控制类对应的工厂,克服了简单工厂违背了"开放-封闭"原则。

Leifeng.java类

package factory;

public class Leifeng {
    public void sweep(){
        System.out.println("扫地");
    }
    public void wash(){
        System.out.println("洗衣");
    }
    public void buyRice(){
        System.out.println("买米");
    }

}

Undergraduate.java类

package factory;

public class Undergraduate extends Leifeng {

}

Volunteer.java类

package factory;

public class Volunteer extends Leifeng {

}

IFacory.java类

package factory;

public abstract class IFacory {
    public abstract Leifeng createLeifeng();
}

UndergraduateFactory.java类

package factory;

public class UndergraduateFactory extends IFacory {

    @Override
    public Leifeng createLeifeng() {
        Leifeng lf = new Leifeng();
        return lf;
    }

}

VolunteerFactory.java类

package factory;

public class VolunteerFactory extends IFacory {

    @Override
    public Leifeng createLeifeng() {
        Leifeng lf = new Volunteer();
        return lf;
    }

}

Business.java类

package factory;

public class Business {

    public static void main(String[] args) {
        IFacory factory = new UndergraduateFactory();
        Leifeng lf1 = factory.createLeifeng();
        Leifeng lf2 = factory.createLeifeng();
        Leifeng lf3 = factory.createLeifeng();
        lf1.buyRice();
        lf2.sweep();
        lf3.wash();
        IFacory vfactory = new VolunteerFactory();
        Leifeng vl1 = vfactory.createLeifeng();
        Leifeng vl2 = vfactory.createLeifeng();
        Leifeng vl3 = vfactory.createLeifeng();
        vl1.buyRice();
        vl2.wash();
        vl3.sweep();
    }

}

 

工厂方法模式

原文:http://www.cnblogs.com/ccgjava/p/7037783.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!