Java设计模式之工厂模式

        在Java中的23种设计模式里,咱们已经讲过单例设计模式,那么今天在这里咱们讲一讲工厂模式。

        那什么是工厂模式呢?工厂模式又是用来解决什么问题的?工厂模式的几种写法,接下来会一一进行讲解。

工厂模式的定义

         工厂模式将目的将创建对象的具体过程屏蔽隔离起来,从而达到更高的灵活性。这样的话可以降低各个代码之间的依赖性,从而达到一个松耦合的特点。而在公司中由于工作的分工,松耦合是一个非常重要的指标。

工厂模式的应用场景

        工厂模式,顾名思义,就是用来生产一些东西的。那在Java中,面向对象编程里,最重要的就是对象的概念了,所以工厂模式就是用于生产对象,在这里会构造不同类的对象。

        可以试想这样的场景:在公司代码中,底层提供的一个Cat的类,上层直接使用new+构造方法的方式来进行了对象的构造生成,但是这时候突然发现Cat类写的并不对,需要改成Dog类,这样的话就会让所有涉及到Cat构造方法的代码全部修改,很显然这样并不合理,会浪费大量的人力物力,所以工厂模式就出现了。

工厂模式的写法

简单工厂

        简单工厂模式就是利用if判断,来进行不同构造方法的调用,代码如下:

 public Animal produce(String animal){
        if(animal == "Dog"){
            return new Dog();
        }else if(animal == "Cat"){
            return new Cat();
        }else {
            return new Snake();
        }
    }

        但是这样的话会有一个缺陷:如果我的代码打错了,把Dog打成了dag,这样的话得到的是Snake的对象类型,而不是我想要的Dog类型,这样的话会容易出现类型的错误。所以出现了第二种工厂模式

方法工厂

        在上一个方法中出现了类型的错误,那为了解决这个问题,我们就提出了方法工厂,我们可以把每一个对象的创建拆分成一个方法,这样的话就能解决因为打错名字而导致的类型错误

    public Cat produceCat(){
        return new Cat();
    }
    public Dog produceDog(){
        return new Dog();
    }
    public Snake produceSnake(){
        return new Snake();
    }

        利用不同的方法名来区分构造方法的调用,这样的话就能避免字符串的拼写错误导致的类型错误,但是思考一下,这样的话每次调用方法的前提是需要创建这个工厂类的对象,当大量的对象被创造出来,会造成一个内存的占用问题,这个问题其实很好解决,利用静态方法可以使用类名调用的特点就可以完美解决问题。

静态工厂

        在静态工厂中,大部分东西都是和方法工厂一致,唯一的区别就是静态工厂中的方法全部为静态方法,这样的话就能让方法的调用更加简单,避免了大量工厂类型对象的创建。

    public static Cat produceCat1(){
        return new Cat();
    }
    public static Dog produceDog1(){
        return new Dog();
    }
    public static Snake produceSnake1(){
        return new Snake();
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值