设计模式(DesignPattern)之工厂模式(Factory)

本文介绍了一种常用的软件设计模式——工厂方法模式。该模式定义了一个创建对象的接口,并将实例化工作推迟到子类中进行,有助于降低客户端与具体产品类间的耦合度。
1、定义

        定义一个创建对象的接口,由子类决定去实例化具体的类,工厂方法把实例化推迟到了子类中。

2、关键点

        在需要创建大量对象的时候可以使用工厂方法模式,遵循依赖倒置原则,依赖抽象接口,不依赖具体类,能够很好的减少客户端与目标类之间的耦合问题。

3、UML类图

4、代码实现
1、工厂方法模式实现
/**
 * 水果接口
 */
public interface IFruit {

    void get();

}

/**
 * 苹果实体类
 */
public class Apple implements IFruit {

    public void get() {
        System.out.println("我是苹果!");
    }

}

/**
 * 香蕉实体类
 */
public class Banana implements IFruit {
    
    @Override
    public void get() {
        System.out.println("我是香蕉!");
    }
    
}

/**
 * 水果工厂类
 */
public class FruitFactory {

    private FruitFactory() {
        throw new RuntimeException("cannot be instantiated");
    }

    public static IFruit getApple() {
        return new Apple();
    }

    public static IFruit getBanana() {
        return new Banana();
    }

    /*****************************************************************************/

    /**
     * 通过反射获取实例,添加类型时不需要修改工厂类
     *
     * @return
     */
    public static IFruit getFruit(Class<? extends IFruit> cls) {
        IFruit fruit = null;
        try {
            fruit = cls.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return fruit;
    }

}
5、总结

        工厂方法模式主要用于创建大量的对象,遵循了依赖导致原则,能够减少客户端以产品类之间的耦合。但是工厂方法模式没有遵循开闭原则,在需要添加或者减少一个新的产品时,需要需修改工厂类的结构。


代码:https://gitee.com/os2chen/DesignPattern


参考:《Head First Design》、《Android源码设计模式解析与实战》




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值