java深入浅出设计模式----简单的工厂模式(一)----业务逻辑分离

现在可扩展性和可维护性特别强,即便是想要计算多个数,那也很容易了,改动的地方很少。而且还能防止恶意的程序员篡改代码。

如果需要进行两个以上的数字的运算,在该接口中添加方法就行了。

package separatetwo.operate;

public interface Operate {

	public abstract int getResult(int numberOne, int numberTwo);

}

加法

package separatetwo.operate;

public class Add implements Operate {

	private Add() {
	};

	private static Add addInstance = null;

	public static Add getAddInstance() {
		if (addInstance == null) {
			addInstance = new Add();
		}
		return addInstance;
	}

	@Override
	public int getResult(int numberOne, int numberTwo) {
		return numberOne + numberTwo;
	}

}

减法

package separatetwo.operate;

public class Sub implements Operate {

	private Sub() {
	};

	private static Sub subInstance = null;

	public static Sub getSubInstance() {
		if (subInstance == null) {
			subInstance = new Sub();
		}
		return subInstance;
	}

	@Override
	public int getResult(int numberOne, int numberTwo) {
		return numberOne - numberTwo;
	}

}

乘法

package separatetwo.operate;

public class Mul implements Operate {
	private Mul() {
	};

	private static Mul mulInstance = null;

	public static Mul getMulInstance() {
		return mulInstance == null ? new Mul() : mulInstance;
	}

	@Override
	public int getResult(int numberOne, int numberTwo) {
		return numberOne * numberTwo;
	}

}

除法

package separatetwo.operate;

public class Div implements Operate {
	private Div() {
	};

	private static Div divInstance = null;

	public static Div getDivInstance() {
		return divInstance == null ? new Div() : divInstance;
	}

	@Override
	public int getResult(int numberOne, int numberTwo) {
		if(numberTwo != 0){
			return numberOne / numberTwo;
		}
		return Integer.MIN_VALUE;
	}

}

............随便来一个算法都可以实现了。

具体的用法:

package separatetwo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import separatetwo.operate.Div;

public class ShowData {

	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		// 输入第一个数
		System.out.println("请输入第一个数:");
		String num1 = reader.readLine();

		// 输入第二个数
		System.out.println("请输入第二个数:");
		String num2 = reader.readLine();

		// 加法
//		int result = Add.getAddInstance().getResult(Integer.valueOf(num1), Integer.valueOf(num2));
//		System.out.print("计算结果是:");
//		System.out.println(result);

		// 减法
//		System.out.println(Sub.getSubInstance().getResult(Integer.valueOf(num1), Integer.valueOf(num2)));

		// 乘法
//		System.out.println(Mul.getMulInstance().getResult(Integer.valueOf(num1), Integer.valueOf(num2)));

		// 除法
		int result = Div.getDivInstance().getResult(Integer.valueOf(num1), Integer.valueOf(num2));
		if(result == Integer.MIN_VALUE){
			System.out.println("除数为0了");
		}
		System.out.println(result);

	}
}

源码下载:点我下载

时间: 2024-10-31 09:02:57

java深入浅出设计模式----简单的工厂模式(一)----业务逻辑分离的相关文章

大话设计模式_抽象工厂模式(Java代码)

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类. 简单描述:有多种抽象产品,并且每种抽象产品都有多个具体产品.一个抽象工厂,提供多个具体工厂,每个工厂则提供不同种类的具体产品. 大话设计模式中的截图: 例子代码: AbstractProductA类: 1 package com.longsheng.abstractfactory; 2 3 public abstract class AbstractProductA { 4 5 public abstract v

Java设计模式之二工厂模式

在上一篇中我们学习了单例模式,介绍了单例模式创建的几种方法以及最优的方法.本篇则介绍设计模式中的工厂模式,主要分为简单工厂模式.工厂方法和抽象工厂模式. 简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.调用只需要告诉工厂类所需要的类型,工厂类就会返回需要的产品类工厂的子类. 可以说是工厂模式中最简单的一种. 打个比方,我们在电脑经常玩游戏,我们只需要告诉电脑我们要玩什么游戏,电脑就会打开这个游戏,我们并不需要关心游戏是

大话设计模式之简单的工厂模式

第一章:代码无错就是优-简单的工厂模式 先建立一个计算类Operation Operation.h文件 @interface Operation : NSObject @property(nonatomic,assign)double numberA; @property(nonatomic,assign)double numberB; @end Operation.m文件 @implementation Operation @end 然后分别创建他们的子类Add,Sub,Mul,Div Add

简单的工厂模式

从今天开始 每天进步一点点.开始了解并学习设计模式,就从简单的工厂模式开始吧.... 简单工厂模式(Simple Factory):不利于产生系列产品 简单工厂模式又称静态工厂方法模式.重命名上就可以看出这个模式一定很简单.它存在的目的很简单:定义一个用于创建对象的接口. 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样. 先来看看它的组成: 1) 工厂类角色:这是本

设计模式学习之--工厂模式

今天学习的设计模式是工厂模式.那么为什么叫它工厂模式呢?工厂模式,顾名思义就是用一个工厂生产各种东西,工厂模式是如何体现的呢? 首先,工厂模式有简单的工厂模式和抽象工厂模式两种,我们先用一个发型的工厂来演示一下简单的工厂模式: 一个发型接口:工厂模式是面向接口编程的,这样可以更易于程序的扩展 package com.sunny.project; /** * 发型接口 * @author Administrator * */ public interface HairInterface { /**

二、设计模式总览及工厂模式详解

二.架构师内功心法之设计模式 2.架构师内功心法之设计模式 2.1.课程目标 1.通过对本章内容的学习,了解设计模式的由来. 2.介绍设计模式能帮我们解决哪些问题. 3.剖析工厂模式的历史由来及应用场景. 2.2.内容定位 不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的 是解耦.设计模式天天都在用,但自己却无感知.我们把设计模式作为一个专题,主要是学习设计模式 是如何总结经验的,把经验为自己所用.学设计模式也是锻炼将业务需求转换技术实现的一种非常有效 的方

设计模式 2/23 工厂模式

工厂模式是最常用的设计模式之一,用好了,代码优雅,可维护性高,对系统设计会上一个台阶 为什么这么说,因为工厂模式可以牵扯出抽象工厂模式,也有大家都会聊到的简单工厂模式 我们要了解一点,23中设计模式中,不包含简单工厂模式,之所以大家会去聊这个,四个字,渐进明细 通过对简单工厂模式的了解,我们引入工厂这个词,不然一个写代码的,天天给他讲工厂,工厂,工厂,西厂,东厂,会晕 同时,通过逐步的深入,从简单工厂,到工厂模式,再到抽象工厂,渐进明细的过程,逐步深入的理解,比较优劣,择优而为我们所用. 试想我

设计模式 2/23 工厂模式(二)

先要给各位同学灌输一个思想,世间本无设计模式,用的人多了,自然就有了 没有太明显的优劣之分,只道是谁更适合 如果没法理解<<工厂>>,建议阅读上一篇 设计模式 2/23 工厂模式(一) ,毕竟是一个渐进明细的过程,急不来的 这一篇分享 工厂模式 回想一下简单工厂,我们把具体类的实例化工作放在一个工厂方法里面来执行. 同时故意在上一篇提到了开放-封闭原则. 仔细想象看看上一篇的代码,到底有没有遵守这个原则,或者说这个原则有没有被严格意义的遵守,或者说遵守的程度是多少. 如果我们要新增

设计模式学习02—工厂模式

1.动机与定义 我们在程序中使用一个对象时,需要new一下,如果需要设置其他值就再初始化一下.比如我要使用一个按钮,手动new一个矩形按钮,然后初始化一些值,如显示文字,背景色等. // 矩形按钮 IButton btn = new RecButton(); // 初始化其他值 btn.setText("提交"); btn.setBackgroundColor("#00aaff"); // 其他初始化省略 // 圆形按钮 IButton btn2 = new Rou