zoukankan      html  css  js  c++  java
  • 简单工厂模式

    什么是工厂模式

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

    工厂模式好处

    工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替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的高内聚的责任分配原则

    简单工厂模式  又叫 静态工厂方法模式  它定义一个具体的工厂类负责创建一些类的实例

      优点  客户端不需要负责对象的创建  从而明确了个各类的职责

      缺点  这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护

  • 相关阅读:
    树形dp入门
    D. Kilani and the Game(多源BFS)
    C. Ayoub and Lost Array
    poj3254(状压dp)
    CodeForces
    链式前项星(模板)
    “东信杯”广西大学第一届程序设计竞赛(同步赛)H
    最小生成树kruskal模板
    hdu-4763(kmp+拓展kmp)
    poj-3080(kmp+暴力枚举)
  • 原文地址:https://www.cnblogs.com/toov5/p/9862946.html
Copyright © 2011-2022 走看看