简单工厂设计模式

  • A+
所属分类:Java设计模式

什么是简单工厂设计模式

简单设计工厂是由封装,多态和继承来组成,由一个定义的类来负责创建其他类的实例,被创建的其他类都有一个共同的父类,简单工模式也被称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,不过他不在我们的23种GOF设计模式之一,可以很好的实现代码的解耦。

工厂模式的分析和实现例子

上面阐述了什么是工厂模式,下面我们也不在啰嗦直接上代码(计数机例子)并通过简单的说明来让各位明白简单工厂模式,简单工厂模式一共分为三个角色:工厂角色,抽象产品角色,具体产品角色。

1)工厂角色(Factory):是简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。可被外界直接调用来创建产品对象。

2)抽象产品角色:是简单工厂模式所创建的所有产品对象的父类,它负责描述所有实例所共有的公共接口

3)具体产品角色:是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例

下面上一个例子:

  1. class Operation {
  2.     double GetResult(){
  3.         return 0;
  4.     }
  5. }
  6. class OperationAdd extends Operation {
  7.     @Override
  8.     public double GetResult() {
  9.         System.out.println("加法~");
  10.         return 0;
  11.     }
  12. }
  13. class OperationDivision extends Operation{
  14.     @Override
  15.     public double GetResult() {
  16.         System.out.println("除法~");
  17.         return 0;
  18.     }
  19. }
  20. class OperationSubtraction extends Operation{
  21.     @Override
  22.     public double GetResult() {
  23.         System.out.println("减法~");
  24.         return 0;
  25.     }
  26. }

创建上面的父类和运算实现类后,我们我们实现工厂,定义一个静态的方法来生成实例

  1. class Factory {
  2.     /**
  3.      * 根据传入的运算方式创建实例
  4.      * @return
  5.      */
  6.     public static Operation createOperation(String type){
  7.         Operation operation=null;
  8.         switch (type) {
  9.             case "+":
  10.                 operation=new OperationAdd();
  11.                 break;
  12.             case "/":
  13.                   operation=new OperationDivision();
  14.                 break;
  15.             case "-":
  16.                   operation=new OperationSubtraction();
  17.                 break;
  18.             default:
  19.                 break;
  20.         }
  21.         return operation;
  22.     }
  23. }

到这里我们的上面说的三个角色已经全部定义完成,下面我们就可以通过我们的静态方法来生成我们想要的实例

  1. class MainFunction{
  2.     public static void main(String[] args) {
  3.         Operation operation=Factory.createOperation("+");
  4.         operation.GetResult();
  5.     }
  6. }

运行结果

简单工厂设计模式

优势劣势分析:

在简单工厂模式中,工厂类是整个模式的关键,其包含必要的判断逻辑,能够根据外界给定的信息,决定究竟创建哪个类的实例,外界可以不用去关注对象的创建,仅需要负责“消费”对象就可以了,明确区分了责任,有利于结构的优化。

不过,简单工厂模式的缺点也提现在其工厂类上,该类集中了所有实例的创建逻辑,违反了高内聚的责任分配原则,当系统的具体产品类不断增多时,工厂类中条件判断过多,不利于扩展及维护,简单工厂模式的这些缺点,利用工厂方法模式可以得到一定的克服。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: