23种设计模式之简单工厂

简介: 23种设计模式之简单工厂


1写在前面的话


    今天我们正式学习23种设计模式之工厂模式,这个模式主要分为三类(简单工厂模式,工厂方法模式,抽象工厂模式),我会分章给大家讲解。


    首先来说说工厂模式到底有啥用?它主要作用在于实现了创建者和调用者的分离,啥子意思呢?也就是说我们调用者去创建实例时不会和创建的这个实例直接联系。

    其核心本质就是实例化对象,用工厂方法代替new操作。



2简单工厂模式


–所谓简单工厂模式


• 用来生产同一等级结构中的任意产品。(对于增加新的产品,需要修改已经写好的代码)


简单工厂模式是最简单的工厂模式也是使用最多的工厂模式,但是它仍然有不足-即违反了面向对象的OCP原则(开闭原则):一个软件的实体应该对拓展开发,对修改关闭

我用一个代码示例来解释一下到底什么是简单工厂模式!


  1. 首先我们写一个Animal.java接口


public interface Animal {

    void speak();
}

     这里我们给了动物一个属性-----叫


 2. 然后我们分别创建 Dog.java和Cat.java两个类,并且分别都继承Animal接口

public class Cat implements Animal {

   @Override
   public void speak() {

       System.out.println("喵喵喵!");
   }

}

public class Dog implements Animal {

   @Override
   public void speak() {

       System.out.println("汪汪汪!");
   }

}

   3. 接下来我们来创建我们的动物工厂  AnimalFactory.java,并且在里面写一个创建动物的方法--CreateAnimal(String type) 并传入一个类型的参数。

public class AnimalFactory {

   public static Animal createAnimal(String type){

       if ("猫".equals(type)){ // 对类型进行判断,并返回各自的对象

           return new Cat();
       }else if ("狗".equals(type)){

           return new Dog();
       }else {

           return null;
       }

   }

}

   

   4. 最后一步就是来测试我们的代码了,我们创建一个Test.java

public class Test {

   public static void main(String[] args){

       Animal a1 = AnimalFactory.createAnimal("猫");
       a1.speak();
       Animal a2 = AnimalFactory.createAnimal("狗");
       a2.speak();
   }

}

运行后的结果:

喵喵喵!

汪汪汪!


Process finished with exit code 0


      从上面代码可以看出,我们没有通过 new Cat()或者 new Dog()来创建这些对象,而是通过 createAnimal()这个方法来创建对象,所以实现了创建者和调用者的分离。


      但是上面也说过,这种方法存在缺点就是违反了面向对象原则的OCP原则,如果我们再添加一种动物,那么我们必须去修改AnimalFactory里面的代码。


        想要解决这个问题,我们可以使用方法工厂模式来解决!请关注下一篇文章!


相关文章
|
7月前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式
|
7月前
|
设计模式 Java PHP
php设计模式--简单工厂模式(一)
php设计模式--简单工厂模式(一)
37 0
|
3月前
|
设计模式
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
7月前
|
设计模式
设计模式-简单工厂和工厂方法
设计模式-简单工厂和工厂方法
|
4月前
|
设计模式 XML Java
【一】设计模式~~~创建型模式~~~简单工厂模式(Java)
文章详细介绍了简单工厂模式(Simple Factory Pattern),这是一种创建型设计模式,用于根据输入参数的不同返回不同类的实例,而客户端不需要知道具体类名。文章通过图表类的实例,展示了简单工厂模式的结构、时序图、代码实现、优缺点以及适用环境,并提供了Java代码示例和扩展应用,如通过配置文件读取参数来实现对象的创建。
【一】设计模式~~~创建型模式~~~简单工厂模式(Java)
|
4月前
|
设计模式 uml C语言
设计模式----------工厂模式之简单工厂模式(创建型)
这篇文章详细介绍了简单工厂模式,包括其定义、应用场景、UML类图、通用代码实现、运行结果、实际应用例子,以及如何通过反射机制实现对象创建,从而提高代码的扩展性和维护性。
设计模式----------工厂模式之简单工厂模式(创建型)
|
4月前
|
设计模式 测试技术 Go
[设计模式]创建型模式-简单工厂模式
[设计模式]创建型模式-简单工厂模式
|
6月前
|
设计模式 Java
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
|
6月前
|
设计模式 Java 编译器
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
|
6月前
|
设计模式 XML Java
【设计模式】第三篇:一篇搞定工厂模式【简单工厂、工厂方法模式、抽象工厂模式】
三 结尾 如果文章中有什么不足,欢迎大家留言交流,感谢朋友们的支持! 如果能帮到你的话,那就来关注我吧!如果您更喜欢微信文章的阅读方式,可以关注我的公众号
64 5