Java 设计模式01 - 简单工厂模式
先要学习设计模式之前的先看看一些基础 UML类图简单说明
可以先看看我的这篇博客: UML类图简单说明,学习编程思路的必会技能
接下来才是重点,开始我们的旅程吧.
一.UML类图展示

我们要用简单工厂模式 实现简易的计算器,看到上面的UML图估计你们都应该明白改创建那些类了,那我们就开始吧。
编程是一门艺术,所以编程切记不要拿着就开始写,一定要理清思路然后在开始行动.
二.开始编程
1. 根据UML类图的规划 ,我们首先创建抽象运算类 Operation (如果直接看这个不懂为什么是运算类是抽象类的可以看看上面我推荐的UML说明文章)
/**
* 操作类
*/
public class Operation { private double numA = 0;
private double numB = 0; public double getNumA() {
return numA;
} public void setNumA(double numA) {
this.numA = numA;
} public double getNumB() {
return numB;
} public void setNumB(double numB) {
this.numB = numB;
} /**
* 获取结果值
* @return
*/
public double getResult(){ double result = 0;
return result;
}
}
2.分别创建四个子类(加减乘除类)
/**
* 加法运算类
*/
public class AddOperation extends Operation { @Override
public double getResult() {
return getNumA() + getNumB();
}
}
/**
* 减法运算类
*/
public class SubOperation extends Operation { @Override
public double getResult() {
return getNumA() - getNumB();
}
}
/**
* 乘法运算类
*/
public class MulOperation extends Operation { @Override
public double getResult() {
return getNumA() * getNumB();
}
}
/**
* 除法运算类
*/
public class DivOperation extends Operation { @Override
public double getResult() {
try{
return getNumA() / getNumB();
}catch (Exception e){
return 0;
}
}
}
3.创建工厂类
/**
* 工厂类
*/
public class OperationFactory { public static Operation createOperation(String operate){ Operation operation = null;
switch (operate){
case "+":
operation = new AddOperation();
break;
case "-":
operation = new SubOperation();
break;
case "*":
operation = new MulOperation();
break;
case "/":
operation = new DivOperation();
break;
}
return operation;
}
}
4.使用
/**
* 简单工厂模式的用法
*/
public class Main { public static void main(String[] args) { Operation operation = OperationFactory.createOperation("/");
operation.setNumA(1);
operation.setNumB(3);
System.out.println("值:"+operation.getResult()); }
}
Demo: 下载地址
是不是很容易,自己敲下就好了.
Java 设计模式01 - 简单工厂模式的更多相关文章
- (1)java设计模式之简单工厂模式
一:简单工厂模式的优点 --->在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Fa ...
- Java设计模式(1)——简单工厂模式
简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 一.模式中包含的角色及其职责 1.工厂(Creator)角色 简单 ...
- Java 设计模式之 简单工厂模式(静态工厂方法模式)
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的 ...
- java设计模式之简单工厂模式
简单工厂: 简单工厂的优点: 1.去除客户端与具体产品的耦合,在客户端与具体的产品中增加一个工厂类,增加客户端与工厂类的耦合 2.封装工厂类,实现代码平台的复用性,创建对象的过程被封装成工厂类,可以多 ...
- Java设计模式之【工厂模式】(简单工厂模式,工厂方法模式,抽象工厂模式)
Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需 ...
- 设计模式之简单工厂模式Simple Factory(四创建型)
工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...
- Java 设计模式之抽象工厂模式(三)
原文地址:Java 设计模式之抽象工厂模式(三) 博客地址:http://www.extlight.com 一.前言 上篇文章 <Java 设计模式之工厂模式(二)>,介绍了简单工厂模式和 ...
- Java中的简单工厂模式
举两个例子以快速明白Java中的简单 工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就 ...
- C#设计模式(2)-简单工厂模式
引言 上一遍中介绍了设计模式中的单例模式-C#设计模式(1)-单例模式,本篇将介绍简单工厂模式,也是比较容易理解的一种模式: 简单工厂模式简介 什么是简单工厂模式? 定义一个工厂类,它可以根据参数的不 ...
随机推荐
- 1年内4次架构调整,谈Nice的服务端架构变迁之路
Nice 本身是一款照片分享社区类型的应用,在分享照片和生活态度的同时可以在照片上贴上如品牌.地点.兴趣等tag. Nice从2013.10月份上线App Store到目前每天2亿PV,服务端架构经过 ...
- Some Web API Url Samples
URI Verb Description ...
- Rxjava2.0 链式请求异常处理
使用Rxjava2.0的过程中,难免会遇到链式请求,而链式请求一般都是第一个抛异常,那么后面的请求都是不会走的.现在来讨论一下链式请求的一种异常处理方法.例如: 一个登录-->通过登录返回的to ...
- webDriver API——第9部分Firefox WebDriver
class selenium.webdriver.firefox.webdriver.WebDriver(firefox_profile=None, firefox_binary=None, time ...
- Linux配置虚拟主机后,只能访问到主页怎么办?
Linux配置虚拟主机后,只能访问到主页怎么办? 今天配置了lamp后,添加了一个虚拟主机,配置http.conf后,增加虚拟主机,测试访问发现只有域名下能访问,ljt.com但是域名下所有的都访问不 ...
- EMQ配置“ClientId 认证”
EMQ配置“ClientId 认证” 基于 MQTT 客户端 ID 认证 clientId配置文件地址 /etc/emqttd/plugins/emq_auth_clientid.conf 内容如下: ...
- Cocos2d-X中的ZORDER和Tag
ZORDER:是描写叙述渲染顺序的值,每一个CCNode都有ZORDER,默认是0 ZORDER越大,越后面绘制 假设ZORDER同样.那么看arrival顺序.先增加的节点先绘制 ZORDER仅仅在 ...
- Linux - 进程控制 代码(C)
进程控制 代码(C) 本文地址:http://blog.csdn.net/caroline_wendy 输出进程ID.getpid(). 代码: /*By C.L.Wang * Eclipse CDT ...
- jquery 在ul中取得第一级的li
在ul中取得第一级的li <div id='demo1'> <ul> <li id='1'>1<li> <li id='2'>2<li ...
- google_gflags使用
gflags是google开源的一个解析命令行参数的工具. 最简单的demo #include <iostream> #include <gflags/gflags.h> us ...