WX 搜寻:程序员个人修养 查看更多内容

简略工厂

作为工厂模式的入门,简略工厂精确的来说其实不算是一个设计模式,反而比拟像是一种编程习惯。其通过将对象的创立细节提取到一个特有的类,这个咱们称之为工厂类,来实现对象创立与业务性能的解耦。提取进去的工厂类,也能够被多个模块复用。

类图

代码实现

咱们还是以咖啡店为例。

一个咖啡店能够售卖多种咖啡,比方摩卡、拿铁……,而这每种咖啡能够看作是一个对象实例,都须要咖啡店这个工厂来创立,客户只须要将想喝的咖啡通知咖啡店,咖啡店就能够提供不同的咖啡,如果当前又减少了新的咖啡种类,比方卡布奇诺,也只须要咖啡店更新产品而已,对于客户并不要任何的扭转就能够提供,同一个客户能够享受到更多的咖啡种类。

而这个咖啡店呢,能够线下经营,也能够同时减少线上经营,比方美团团购……这个就相似多个模块对工厂的复用。

上面咱们用代码来实现:

package com.study.design.Factory.abstractfactory;/** * 实例对象接口 * 咖啡 */public interface Coffe {    String coffeName();}
package com.study.design.Factory.abstractfactory;/** * 具体实例类 * 拿铁咖啡 */public class LatteCoffe implements Coffe{    @Override    public String coffeName() {        return "latte";    }}
package com.study.design.Factory.abstractfactory;/** * 具体实例类 * 摩卡咖啡 */public class MochaCoffe implements Coffe{    @Override    public String coffeName() {        return "mocha";    }}
package com.study.design.Factory.abstractfactory;/** * 简略工厂类 */public class SimpleFactory {    /**     * 咱们这里简略定义     * 如果传入类型为 1, 则示意获取摩卡咖啡对象,其余都是拿铁     * @param type 须要的咖啡类型     * @return     */    public Coffe productCoffe(int type){        if (type == 1){            return new MochaCoffe();        }else{            return new LatteCoffe();        }    }}
package com.study.design.Factory.abstractfactory;/** * 消费者 */public class Customer {    private SimpleFactory simpleFactory;    /* 构造方法中绑定工厂实例     * 也能够通过别的形式,比方 set 办法     */    public Customer(SimpleFactory simpleFactory){        this.simpleFactory = simpleFactory;    }    /*客户需要*/    public void drink(int type){        Coffe coffe = simpleFactory.productCoffe(type);        System.out.println("I got a cup of " + coffe.coffeName());    }}
package com.study.design.Factory.abstractfactory;public class SimpleFactoryTest {    public static void main(String[] args) {        // 创立工厂对象-咖啡店        SimpleFactory simpleFactory = new SimpleFactory();        // 客户-消费者        Customer customer = new Customer(simpleFactory);        // 客户不同的对象-不同的咖啡        customer.drink(1);        customer.drink(2);    }}

要点

简略工厂,其实就是将创建对象的逻辑提取到另外一个类,称为工厂类,使创建对象的过程与使用者解耦,使用者通过传送不同的参数给工厂类,工厂类负责创立不同的对象并返回。体现了 Java 对象封装的特点,将一块独自的性能逻辑提取封装起来。

WX 搜寻:程序员个人修养 查看更多内容