码迷,mamicode.com
首页 > 其他好文 > 详细

工厂方法模式

时间:2017-06-17 10:24:17      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:return   factor   vol   was   font   pre   rri   class   static   

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

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();
    }

}

 

工厂方法模式

标签:return   factor   vol   was   font   pre   rri   class   static   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!