简单工厂模式-大话设计模式

简介: 简单工厂模式-大话设计模式

一、介绍

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

二、示例

实现一个计算程序,给定两个数字,返回结果


public abstract class Operation {
    public abstract double getResult(double numberA,double numberB);
}
public class Add extends Operation{
    @Override
    public double getResult(double numberA, double numberB) {
        return numberA+numberB;
    }
}
public class Div extends Operation{
    @Override
    public double getResult(double numberA, double numberB) {
        if (numberB==0) {
            throw  new ArithmeticException();
        }
        return numberA/numberB;
    }
}
public class Mul extends Operation{
    @Override
    public double getResult(double numberA, double numberB) {
        return numberA*numberB;
    }
}
public class Sub extends Operation{
    @Override
    public double getResult(double numberA, double numberB) {
        return numberA-numberB;
    }
}

工厂类

public class OperationFactory {
    public static Operation createOperate(String operate) {
        Operation oper = null;
        switch (operate) {
            case "+":
                oper = new Add();
                break;
            case "-":
                oper = new Sub();
                break;
            case "*":
                oper = new Mul();
                break;
            case "/":
                oper = new Div();
                break;
 
        }
        return oper;
    }
}

测试

/**
 * 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,
 * 但不属于23种GOF设计模式之一。
 * 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
 * 简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
 */
public class SimpleFactoryTest {
    public static void main(String[] args) {
        Operation operate = OperationFactory.createOperate("+");
        System.out.println(operate.getResult(10, 20));
        operate = OperationFactory.createOperate("-");
        System.out.println(operate.getResult(10, 20));
        operate = OperationFactory.createOperate("*");
        System.out.println(operate.getResult(10, 20));
        operate = OperationFactory.createOperate("/");
        System.out.println(operate.getResult(10, 20));
 
    }
}
30.0
-10.0
200.0
0.5

目录
相关文章
|
3天前
|
设计模式 Java
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
|
4天前
|
设计模式 存储 算法
设计模式学习心得之五种创建者模式(2)
设计模式学习心得之五种创建者模式(2)
12 2
|
4天前
|
设计模式 搜索推荐
工厂方法模式-大话设计模式
工厂方法模式-大话设计模式
6 1
|
9天前
|
设计模式 Java 编译器
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
|
9天前
|
设计模式 Java 数据库连接
Java设计模式之工厂方法模式详解
Java设计模式之工厂方法模式详解
|
9天前
|
设计模式 算法
行为型设计模式之模板模式
行为型设计模式之模板模式
|
21天前
|
设计模式 新零售 Java
设计模式最佳套路5 —— 愉快地使用工厂方法模式
工厂模式一般配合策略模式一起使用,当系统中有多种产品(策略),且每种产品有多个实例时,此时适合使用工厂模式:每种产品对应的工厂提供该产品不同实例的创建功能,从而避免调用方和产品创建逻辑的耦合,完美符合迪米特法则(最少知道原则)。
35 6
|
21天前
|
设计模式 Java 关系型数据库
设计模式第2弹:工厂方法模式
type ComputerProduct struct{} // 实现工厂方法 func (computer ComputerProduct) GetInformation() string { return "电脑,官方称呼计算机,主要用于进行数据运算的一台机器。" }
27 4
|
4天前
|
设计模式 安全 Java
设计模式学习心得之五种创建者模式(1)
设计模式学习心得之五种创建者模式(1)
5 0
|
10天前
|
设计模式 人工智能 自然语言处理
【设计模式】MVVM模式在AI大模型领域的创新应用
【设计模式】MVVM模式在AI大模型领域的创新应用
21 0