首页 > 其他 > 详细

设计模式(一)之简单工厂模式

时间:2021-01-22 16:44:36      阅读:32      评论:0      收藏:0      [点我收藏+]

简单工厂模式,到底要实例化谁,将来会不会增加实例化的对象,比如说增加开根运算,这是容易变化的地方,应该考虑使用一个单独的类做这个创造的过程,这就是工厂。

  1. 定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类
  2. 在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法(Static Factory Method)
  3. 需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程
  4. 例如,我开一家披萨店,当客户需要某种披萨并且我这家店里也能做的时候,我就会为其提供所需要的披萨(当然是要钱的哈哈),如果其所需的我这没有,则是另外的情况,后面会谈。这时候,我这家 披萨店就可以看做工厂(Factory),而生产出来的披萨被成为产品(Product),披萨的名称则被称为参数,工厂可以根据参数的不同返回不同的产品,这就是简单工厂模式

假如说我们使用加减乘除来作为例子,说明简单工厂模式的方法。其中简单工厂模式根据输入的字符返回具体的加减乘除对象,将判断符号的功能交给工厂来做。我们给工厂输入了一个符号,工厂就给我们返回一个对象,我们直接使用这个对象进行运算即可,不需要关系具体的判断过程。

代码实现:


/**
 * 简单工厂模式
 * @author Administrator
 *
 */
public class SimpleFactory {
	public static void main(String[] args) {
		// 测试简单工厂的代码
		Operation oper;
		oper = OperationFactory.createOpeartion("*");
		oper.a = 10;
		oper.b = 5;
		double result = oper.getResult();
		System.out.println("最后的结果为:" + result);
	}
}

// 简单工厂的实现类
class OperationFactory{
	
	public static Operation createOpeartion(String operate) {
		Operation oper = null;
		switch (operate) {
		case "+":
			oper = new OperationAdd();
			break;
		case "-":
			oper = new OperationSub();
			break;
		case "*":
			oper = new OperationMul();
			break;
		case "/":
			oper = new OperationDiv();
			break;

		default:
			System.out.println("输入的运算符号有问题!");
			break;
		}
		
		return oper;
	}
}

// 基础操作类
abstract class Operation{
	double a;
	double b;
	public double getA() {
		return this.a;
	}
	public void setA(double a) {
		this.a = a;
	}
	public double getB() {
		return this.b;
	}
	public void setB(double b) {
		this.b = b;
	}
	
	// 以后继承的方法要重写的方法
	public abstract double getResult();
}

// 定义 + - x / 四种操作方法
class OperationAdd extends Operation{
	
	@Override
	public double getResult() {
		double result = 0;
		result = a + b;
		return result;
	}
}

// 减
class OperationSub extends Operation{
	
	@Override
	public double getResult() {
		double result = 0;
		result = a - b;
		return result;
	}
}

//乘
class OperationMul extends Operation{
	
	@Override
	public double getResult() {
		double result = 0;
		result = a * b;
		return result;
	}
}

//除
class OperationDiv extends Operation{
	
	@Override
	public double getResult() {
		double result = 0;
		result = a /- b;
		return result;
	}
}

设计模式(一)之简单工厂模式

原文:https://www.cnblogs.com/liulongtao/p/14313482.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!