简单工厂模式

Posted toov5

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单工厂模式相关的知识,希望对你有一定的参考价值。

什么是工厂模式

 实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式

 

工厂模式好处

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。

利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。

将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。

 

工厂模式分类

 

 

简单工厂模式

简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品类所对应的参数即可。但是工厂的职责过重,而且当类型过多时不利于系统的扩展维护。

 

大家注意 工厂和容器的概念, 容器存放,工厂创建。

 请看目录结构:

技术分享图片

 

 Car接口定义:

package FactoryModel;

//汽车厂
public interface Car {
   void run();
}

实现类,各种车型:

package FactoryModel;

public class BydCar implements Car {

    @Override
    public void run() {
        System.out.println("比亚迪run");
        
    }
    
}
package FactoryModel;

public class JiLiCar implements Car {

     @Override
    public void run() {
        
       System.out.println("吉利run");    
    }
    
}

定义工厂:

package FactoryModel;

//汽车厂
public class CarFactory {
   
 public static Car createCar(String name){
     
       if (name.equals("比亚迪")) {
        return new BydCar();
    }
      if (name.equals("吉利")) {
        return new JiLiCar();
    }
      //其他类型的
        return null;
    }    
}

定义客户端:

package FactoryModel;

public class Client {

      public static void main(String[] args) {
         Car byd = CarFactory.createCar("比亚迪");
        byd.run();
    }
    
}

运行结果:

技术分享图片

简单工厂模式:里面的场景多 传递参数 返回具体产品 但是类型很多时候就影响扩展性了 很麻烦了

 

单工厂的优点/缺点

优点:简单工厂模式能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。明确区分了各自的职责和权力,有利于整个软件体系结构的优化。

缺点:很明显工厂类集中了所有实例的创建逻辑,容易违反GRASPR的高内聚的责任分配原则

以上是关于简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

PHP面向对象之选择工厂和更新工厂

设计模式-简单工厂工厂方法模式抽象工厂模式详解

设计模式之简单工厂模式

C++工厂模式(简单工厂工厂方法抽象工厂)

C++工厂模式(简单工厂工厂方法抽象工厂)