创建型设计模式之简单工厂模式

应用场景:

当某产品有一些种类且种类不是特别多的情况下,可以选择使用简单工厂来创建所需产品(对象),而不需要关心具体的创建细节,相对来说便于后面的维护和扩展(必须增加产品种类不需要改动太多之前的代码)

 

优缺点:

优点:简单工厂结构简单,调用方便,可以明确区分工厂和产品的职责;

缺点:工厂负责所有产品的创建,当产品过多时,代码可能会变的比较臃肿。

 

简单工厂类图:

举个栗子(关于设计模式的使用简单的说一下,设计模式实现起来有很多种方式和变种,不可能一一列举出来,只能选择某一种拿出来说一下,仅供参考):

1:新建一个产品的上层抽象接口,比如我的目的是实现输出汽车的名称,首先抽象一个ICar的接口

public interface ICar {
    public void name();
}

2:分别建两个类,实现ICar接口,重写name()

public class Lamborghini implements ICar {
    @Override
    public void name() {
        System.out.println("I AM A Lamborghini");
    }
}

public class Bus implements ICar{
    @Override
    public void name() {
        System.out.println("I AM A BUS");
    }
}

3:建一个工厂类,负责根据参数生成对象。

public class CarFactory {

    public static ICar create (Class<? extends ICar> icar) {
        ICar iCar = null;
        try {
            iCar = icar.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        return iCar;
    }

}

4:测试

public class FactoryTest {

    public static void main (String[] args) {
        ICar iCar1 = CarFactory.create(Lamborghini.class);
        ICar iCar2 = CarFactory.create(Bus.class);

        iCar1.name();
        iCar2.name();
    }

}

5:结果

I AM A Lamborghini
I AM A BUS

总结:

这就是一个简单工厂简单实现,有人可能会说不这么用不行么,直接new一个对象还省了很多代码。其实却实可以使用设计模式的同时确实会在一定程度上带来代码或者结构上的复杂度,但是个人理解,设计模式从来就不是为了让程序员在开发过程中少写几行代码而存在的,它的意义在于带来了代码的可重用性,可读性和可维护性等方面的提升,举个例子,比如上面的实现中,如果再新增加一个出租车类,只需要新增一个类,在使用的地方将附上参数即可,而不需要去改动之前的实现,另外阅读起来也是很清晰明了。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值