zoukankan      html  css  js  c++  java
  • 设计模式学习--简单工厂模式

    简单工厂模式

      简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

      利用简单工厂模式设计一个计算器。

    1:创建一个运算的类

     1 package EasyFactoryModel;
     2 
     3 abstract class Operation {
     4 
     5     public double num1=0;
     6     public double num2=0;
     7     public double getNum1() {
     8         return num1;
     9     }
    10     public void setNum1(double num1) {
    11         this.num1 = num1;
    12     }
    13     public double getNum2() {
    14         return num2;
    15     }
    16     public void setNum2(double num2) {
    17         this.num2 = num2;
    18     }
    19     
    20     public abstract double getResult();
    21 }

     2:创建一个加法类。

    1 class OpeartionAdd extends Operation {
    2 
    3     public  double getResult(){
    4         double result=0;
    5         result=num1+num2;
    6         return result;
    7     }
    8 }

    3:创建一个减法类。

    public class OpeartionSub extends Operation {
    
    	public double getResult(){
    		double result=0;
    		result=num1-num2;
    		return result;
    	}
    }
    

    4:创建一个乘法类。

    public class OperationMul extends Operation {
    
        public double getResult(){
            double result=0;
            result=num1*num2;
            return result;
        }
    }

    5:创建一个除法类。

    public class OperationDiv extends Operation {
    
    	public double getResult(){
    		double result=0;
    		result=num1/num2;
    		return result;
    	}
    }
    

    6:基本运算类做完之后,会发现,需要根据需要的加减乘除来实例化不同的类,此事,就需要 工厂类。

    public class OperationFactory {
    
    	public static Operation creatOpera(String operation){
    		
    		Operation oper=null;
    		switch(operation){
    		
    		case "+":oper=new OpeartionAdd();break;
    		case "-":oper=new OpeartionSub();break;
    		case "*":oper=new OperationMul();break;
    		case "/":oper=new OperationDiv();break;
    		
    		}
    		return oper;
    	}
    
    }
    

      工厂类根据不同的操作来创建不同的对象,这里是多态的使用。

    7;测试类

     1 public class Calculator {
     2 
     3     public static void main(String[] args) {
     4         
     5         Operation oper;
     6         String operation="+";
     7         oper=OperationFactory.creatOpera(operation);
     8         oper.num1=1;
     9         oper.num2=2;
    10         double result=0;
    11         result=oper.getResult();
    12         System.out.println("result="+result);
    13         
    14     }
    15 
    16 }

    8:控制台输出:

    result=3.0

    优点:简单工厂类是整个模式的关键,其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类对象,
    通过实现简单工厂模式,用户无需了解对象是如何创建的,只要传入必要的信息即可。

    缺点:工厂类集中了所有实例的创建逻辑,违背了高内聚分配原则。
    随着系统中具体产品类不断增多,势必要不断修改工厂类,不易维护和扩展。同时也违背了开放封闭原则。

  • 相关阅读:
    day06
    day05
    day04
    day03
    day02
    day01
    斯坦福大学Machine Learning中文笔记目录
    张志华 机器学习 两门课程正确顺序及视频连接
    ROS:No module named 'em' 解决方法
    获取windows文件夹目录
  • 原文地址:https://www.cnblogs.com/hrlizhi/p/7600335.html
Copyright © 2011-2022 走看看