转发Java设计当中的工厂设计模式

Posted mt888888

tags:

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

工厂模式:主要用于实例化具有公共接口的类。工厂模式可以动态确定哪个类应该被实例化。

  工厂模型的形式

  工厂模型主要使用以下几种形式之一:

  1:简单工厂(Simple Factory)。

  2:工厂法(Factory Method)。

  3:抽象工厂(抽象工厂)。

  简易工厂(简易工厂)

  也叫静态工厂,是工厂模式3状态下最简单的结构。主要有一个静态方法,用来接受参数,根据参数决定返回实现相同1接口的不同类的实例。让我们看一个具体的例子:

  假设一个工厂生产洗衣机、冰箱、空调等等.

  我们首先为所有产品定义一个通用的产品界面

  公共界面产品{}

  然后我们让这个工厂的所有产品都必须实现这个接口

  公共类洗衣机实现产品{

  公共洗衣机(){

  System.out.println(‘洗衣机制造‘);

  {}

  {}

  公共类Impox实现产品{

  public Impox(){

  System.out.println(‘冰箱制造‘);

  {}

  {}

  公共级空调实施产品{

  public Impox(){

  System.out.println(‘空调制造‘);

  {}

  {}

  接下来,我们将编写一个工厂类,负责生产上述产品

  公共类SimpleFactory {

  公共静态产品工厂(字符串产品名称)引发异常{

  if(ProductName . equals(‘ Washer ‘)){

  退回新垫圈();

  } else if(ProductName . equals(‘ Impox ‘){

  return new Impox();} else if(ProductName . equals(‘ AirCondition ‘){

  返回新空调();

  }else{

  抛出新的Exception(‘没有这样的产品‘);

  {}

  {}

  {}

  好了,有了这个工厂类,我们就可以开始下单了,SimpleFactory会根据不同的订单类来决定生产什么产品。

  公共静态void main(String[] args) {

  尝试{

  simpleFactory . Factory(‘ Washer ‘);

  simple factory . factory(‘ Impox ‘);

  SimpleFactory.factory(‘空调‘);

  }捕获(例外e) {

  e . printstacktrace();

  {}

  {}

  从上面的代码可以看出,一个SimpleFactory的核心是一个SimpleFactory类,它具有必要的逻辑判断能力和创建所有产品的权利。我们只需要给他订单就能得到我们想要的产品。这个好像用起来很方便。

  然而,事实上,这个简单工厂有许多限制。首先,每次我们要添加一个新的产品,都要修改SimpleFactory的原始代码。其次,当我们的产品很多,产品之间存在复杂的层次关系时,这个类必然具有复杂的逻辑判断能力,其代码量会持续激增,对于未来的保护简直是吓人。

  此外,所有系统都严重依赖SimpleFactory类。只要SimpleFactory类1出了问题,系统就会进入无法工作的状态,这也是最致命的一点.

  上述缺点将在工厂模式的另外两种状态下得到解决。

  工厂方法(工厂方法)

  上面的代码告诉我们,简单的工厂并不简单,它是所有模型的核心。一旦出了问题,所有的模型都会受到影响,无法工作。为了降低风险,为未来的保护和扩展做准备,我们需要对其进行改造,并引入工厂方法。工厂方法为工厂类定义了接口,用多态来削弱了工厂类的职能,以下是工厂接口的定义:

  公共接口工厂{

  public Product create();

  {}

  我们再来定义1个产品接口

  公共界面产品{}

  1下是实现了产品接口的产品类

  公共类洗衣机实现产品{

  公共洗衣机({

  System.out.println(‘洗衣机被制造了);

  {}

  {}

  公共类Impox实现产品{

  public Impox(){

  System.out.println(‘冰箱被制造了);

  {}

  {}

  公共级空调实施产品{

  public Impox(){

  System.out.println(‘空调被制造了);

  {}

  {}

  接下来,就是工厂方法的核心部份,也就是具体创建产品对象的具体工厂类,

  //创建洗衣机的工厂

  公共类创建洗衣机实现工厂{

  公共产品创建({

  退回新垫圈();

  {}

  {}

  //创建冰箱的工厂

  公共类创建冰箱实现工厂{

  公共产品创建({

  返回new Impox();

  {}

以上是关于转发Java设计当中的工厂设计模式的主要内容,如果未能解决你的问题,请参考以下文章

java 之 工厂模式(大话设计模式)

java23种设计模式之八: 工厂方法模式

Spring的IOC分析

设计模式-抽象工厂模式

设计模式之工厂方法模式

设计模式--工厂方法模式