`

工厂模式 之 简单工厂

阅读更多

  工厂模式的作用在于将创建对象的过程封装到一个类中完成,减少在客户端的耦合程度。 工厂模式有几种实现的形式,今天从最简单的一种实现入手,简单工厂模式(静态工厂模式)。简单工厂模式也称为静态工厂模式,就是因为在整个工厂类中,只有一个静态的工厂方法用于创建实例对象。

  简单工厂模式中一共包含了三个角色类型: 工厂角色,抽象产品角色,具体产品角色。

  •   工厂类角色: 担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的逻辑
  •   抽象产品角色: 担任这个角色的类是工厂方法模式所创建的对象的超类
  •   具体产品角色: 实际返回给客户端的产品对象

 

// 工厂类角色


public class SimpleFactory(){

   /* 静态工厂方法 */


   public static Produce factory(String type){


        // 根据不同的类型,创建不同的产品对象


        if("A".equals(type)){


               return new ProduceA();


        }else  if("B".equals(type)){


               return new ProduceB();


        }else  if("C".equals(type)){


               return new ProduceB();


        }


   }


}

 

 

// 抽象产品类


public interface Produce{

      public void doSome();


}
 

 

// 具体产品类

public Class ProduceA implement Produce{
 
      public void doSome(){
             // do something for produceA;
      }
}

public Class ProduceB implement Produce{
 
      public void doSome(){
             // do something for produceB;
      }
}

public Class ProduceC implement Produce{
 
      public void doSome(){
             // do something for produceC;
      }
}


 

 

   简单工厂模式的优点与缺点

 

    简单工厂模式的优点在于这个类中含有了必要的判断逻辑,可以决定什么时候创建哪个产品类返回给客户,而客户端仅负责对产品类的消费行为既可。

    但也因为工厂方法中存在了必要的判断逻辑,为简单工厂模式带来了不少的缺点。

  1. 这个工厂类集合了所有产品的判断逻辑,让这个类成为了一个无所不知的全能类,让这个类拥有了太多的责任,如果这个类不能工作时,将会带来很大的影响。
  2. 类中包含了必要的判断逻辑,如果添加了产品类,那么必然导致工厂方法的修改。而这种行为,恰恰违反了“开-闭”原则,对修改的开打,必然会带来很大的问题。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics