简单工厂模式浅析

来源:互联网 发布:上淘宝网怎么注册 编辑:程序博客网 时间:2024/05/20 04:13

一、什么是简单工厂?

  简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式(实际上它不是二十三种设计模式中的一种,它被看为工厂方法模式的一种特例 工厂方法模式 )。 在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

二、简单工厂角色组成

  一、产品角色
  
  多个产品类,而我们要创建的就是这些产品类的实例。
  
  二、工厂角色
  
  创建实例的工厂类,通过接受参数来决定创建哪一个产品的实例。

  三、抽象产品角色
  
  这个类通常都是产品类的抽象父类,或者所有产品都实现的接口。

三、UML类图举例###

这里写图片描述

四、代码示例

/** * 简单工厂举例 * @author liu * */public class SimpleFactory {    public AbstractFactory testFactory(String a){        if(a =="FactoryA"){            return new FactoryA();        }        if(a == "FactoryB"){            return new FactoryB();        }        return null;    }}
public class FactoryB extends AbstractFactory{}
public class FactoryA extends AbstractFactory{}
public class AbstractFactory {}

五、优劣点分析###

简单工厂:定义一个用于实例化的接口,将实例化的权限下放给子类,让子类去选择到底去实例化哪个对象
简单工厂的核心思想就是,有一个类专门负责创建类的示例的过程
一个有意思的比喻:
比如,我不会做饭,请一群美女吃饭,我只要请他们去饭店,她们自己点就可以了,我只是负责找饭店的人,至于她们吃什么,自己决定,怎么做,那是饭店的事情
简单工厂将工厂类和产品的生产,进行了分离,他可以将创建实例的权限下发给子类。
但是简单工厂有很大的缺陷
1,比如我将所有的产品都封装到一个类里面,那么如果我这个工厂类出现了问题,我所有产品都无法生产了
2,如果我要增加一个产品,那么我需要修改原来的工厂类的代码,来增加一个产品,新增加一个判断,修改原来的代码,这不符合开闭原则,也就是对扩展开放,对修改关闭
3,我把所有的判断逻辑都封装进了工厂类的方法之中,这违反了方法的单一性原则,即一个方法实现一个功能

0 0
原创粉丝点击