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

    简单工厂含义

    简单工厂模式又称静态方法模式,可以将其理解为生产对象的一个类,称为工厂类。

    解决的问题

    将“类实例化的操作”与“使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类,从而避免了在客户端代码中显式指定,同时如果代码中多处使用到这个类,修改时就只在一个地方修改就可以了,达到了解耦的效果。

    UML

    代码实现

    抽象计算类

    public interface Calculation {
        double calculate(double num1,double num2);
    }
    
    

    具体计算类--加法类

    public class PlusCalculation implements Calculation{
        @Override
        public double calculate(double num1, double num2) {
            return num1+num2;
        }
    }
    
    

    具体计算类--减法类

    public class SubCalculation implements Calculation {
    
        @Override
        public double calculate(double num1, double num2) {
            return num1-num2;
        }
    }
    
    

    工厂类

    public class CalculationFactory  {
       public static Calculation create(char ch){
           Calculation calculation= null;
           switch (ch){
               case '+':calculation =  new PlusCalculation();break;
               case '-':calculation =  new SubCalculation();break;
           }
           return calculation;
       }
    }
    

    缺点

    违背“开放关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,这样就会造成工厂逻辑过于复杂。

    应用场景:

    1. 客户如果只知道传入工厂类的参数(用于确定实例化哪一个类的对象),对于如何创建对象的逻辑不关心时
    2. 当工厂类负责创建的对象(具体产品)比较少时
  • 相关阅读:
    Google Web 字体 API 访谈
    关于如何跨越抄袭程序阶段的一些断想
    DirectX开发中找不到dxtrans.h的问题的解决
    Google Web 字体 API 访谈
    NetBeans 6.9 发布后选版 1 已经可用
    Thrift java服务器与客户端示例
    Wing IDE Pro v. 4.1.91 Python Wingware Python IDE
    tkang's blog
    Thrift的简单使用
    maven加载自己的包
  • 原文地址:https://www.cnblogs.com/zhangchenwei/p/12561900.html
Copyright © 2011-2022 走看看