简单工厂模式

原创 2013年12月04日 09:50:29

文章摘抄自网络

 

工厂模式是类的创建模式,又叫做虚拟构造(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。

工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。

 

工厂模式在《Java与模式》中分为三类:

1)简单工厂模式(Simple Factory):不利于产生系列产品;

2)工厂方法模式(Factory Method):又称为多形性工厂;

3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品;

             这三种模式从上到下逐步抽象,并且更具一般性。

             GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)。将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。

 

一、简单工厂模式

简单工厂模式是类的创建模式,又叫静态工厂方法模式(负责创建一般产品的类事例用的是一个静态方法)。

这里有三个基本的图形,Circle,Square,Triangle而每个基本的图形都有被画和被被擦出的方法,接口Shape就定义了所有图形都同用的这两个方法,ArtTracer类提供了一个静态工厂方法,在客户端调用的情况下,返回客户端所需要的类事例,其他的代码都比较简单,这里只给出ArtTracer类的代码:

 

public class ArtTracer {
    public static Shape factory(String witch) throw BadShapeException{
        if(wicth.equals("Circle"){
            return new Circle();
        }
        else if(wicth.equals("Square"){
            return new Square();
        }
        else if(wicth.equals("Triangle"){
            return new Triangle();       
        }else{
            throw new BadShapeException(witch);
        }
    }
}

public class BadShapeException extends Exception{
   public BdaShapeException(String witch){
	  super(witch);
   }
}

 

从上面的代码可以看出,在客户端使用的时候你只要去调用ArtTrace类的工厂方法,返回你想要的类的事例,而不需要关心内部实现以及这个类事例到底是怎样生成的,当你所调用的图形是系统不支持的时候,将会给你抛出一个异常,简单工厂模式是根据传入的参数来决定到底应该创建那个类的事例出来。下图是简单工厂模式的一般结构:

 

 

由上图可以看出,简单工厂模式由,工厂角色,抽象产品角色,产品角色,这三部分:

工厂角色:这是工厂方法模式的核心,但客户段调用他的工厂方法的时候,返回给客户端的是产品角色的一个类事例。

抽象产品角色:定义了产品角色所共有的共性,通常由一个java接口或者是一个java抽象类。如果具体产品之间没有共同的商业逻辑,就用java接口,如果有共同的商业逻辑,就用一个java抽象类。

产品角色:简单工厂方法所创建的任何一个对象都是这个角色的一个类事例。

 

角色之间是可以相互合并的,例如三个角色合并成一个,就好象单例模式,单例模式自身是自己的工厂角色,但并不完全等同于单例模式,单例模式中的构造方法是私有的。

简单工厂模式的缺点是当在产品角色中再增加一个类的时候,工厂方法必须有发生响应的改变,这就导致了扩展性,不符合开-闭原则。

 

 

  • 8ff55f74-2052-31a6-952b-920084d79294-thumb.jpg
  • 大小: 27.1 KB
  • 8bea9658-05b3-3bac-b222-f22c28ee8ea2-thumb.jpg
  • 大小: 13.8 KB

简单工厂模式

  • 2017年08月16日 20:07
  • 60.84MB
  • 下载

简单工厂模式的C++、Java实现

  • 2017年02月04日 18:05
  • 21.84MB
  • 下载

神奇的魔术师——简单工厂模式

简单工厂模式(Simple Factory):又叫静态工厂方法:由一个工厂对象决定创建某一产品对象的实例。主要用来创建同一类对象。小白经过几天对团队代码的学习,终于对面向对象思想有所认识,自己跳动的小...

Calculator(简单工厂模式)

  • 2014年04月04日 12:37
  • 550KB
  • 下载

简单工厂模式(计算器)

  • 2014年07月11日 16:57
  • 31KB
  • 下载

简单工厂模式--Python版

简单工厂模式 简单工厂模式的主要思想就是通过接口和继承来创建不同子类,属于类的创建型模式,适合对大量具有相同接口的类进行实例化,推迟到运行的时候才决定要创建哪个类的实例。 示例: 写一个计算器控制台...

简单工厂模式学习代码

  • 2013年03月17日 17:09
  • 2KB
  • 下载

简单工厂模式demo

  • 2017年06月27日 09:40
  • 10KB
  • 下载

C# EF Core 简单工厂模式,接口多继承实例(三)

一、说明 1.本实例是基于.Net Core 1.1,EF Core 1.1的代码实例,仅供参考 2.当前版本的EF Core好像还没有提供模型验证,异常跟踪等 二、实体层,自动 生成 三 、...

简单工厂模式

  • 2012年09月27日 10:18
  • 3.2MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单工厂模式
举报原因:
原因补充:

(最多只允许输入30个字)