设计模式--工厂方法模式

2019-11-30  本文已影响0人  daoshud1

什么是工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类;

简单解释

与简单工厂模式的区别

简单工厂模式的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态的去实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
工厂模式将选择判断的逻辑由服务端移到了客户端,去客户端去判断实现。

UML类图

image image

简单工厂缺点

工厂方法模式优点

代码解释

以生产饼干为例

/**
 * 定义一个饼干抽象类,并定义抽象方法生产饼干
 * @author ws
 * @version 1.0
 */
public abstract class Biscuits {
    /**
     * 获取饼干信息
     * @return
     */
    public abstract String getCookies();
}
/**
 * 继承饼干抽象类,并实现获取饼干方法
 * @author ws
 * @version 1.0
 */
public class MilkBiscuits extends Biscuits {
    @Override
    public String getCookies() {
        return "牛奶饼干";
    }
}
/**
 * 继承饼干抽象类,并实现获取饼干方法
 * @author ws
 * @version 1.0
 */
public class ChocolateBiscuit extends Biscuits {
    @Override
    public String getCookies() {
        return "巧克力饼干";
    }
}
/**
 * 定义饼干工厂类
 * @author ws
 * @version 1.0
 */
public abstract class BiscuitsFactory {

    public abstract Biscuits getBiscuits();
}
/**
 * 牛奶饼干工厂类,返回实例化的牛奶饼干
 * @author ws
 * @version 1.0
 */
public class MilkBiscutisFactory extends BiscuitsFactory {
    @Override
    public Biscuits getBiscuits() {
        return new MilkBiscuits();
    }
}
/**
 * 巧克力饼干工厂类,返回实例化的巧克力饼干
 * @author ws
 * @version 1.0
 */
public class ChocolateBiscuitFactory extends BiscuitsFactory {
    @Override
    public Biscuits getBiscuits() {
        return new ChocolateBiscuit();
    }
}
 public static void main(String[] args) {
        BiscuitsFactory factory=new ChocolateBiscuitFactory();
        Biscuits biscuits=factory.getBiscuits();
        System.out.println(biscuits.getCookies());
    }
巧克力饼干    

参考:大话设计模式、工厂方式模式

上一篇 下一篇

猜你喜欢

热点阅读