博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模式1. 简单工厂模式-Java
阅读量:4034 次
发布时间:2019-05-24

本文共 3078 字,大约阅读时间需要 10 分钟。

简单工厂模式

1.面向对象编程的好处

可维护、可复用、可扩展、灵活性好。

通过封装、继承、多态、把程序的耦合性降低,用设计模式使得程序更加灵活,容易修改并且易于复用。

  • 编程有一原则,就是尽可能的减少重复。
  • 业务逻辑和界面逻辑分开
  • 紧耦合与松耦合

2.使用计算机小程序的一个例子体会简单工厂模式:

建立一个计算器类类A–体现封装

建立不同的子类代表不同的操作(±*/),继承父类–体现继承

实现一个单独的类做创建实例的过程,根据不同的输入创建不同的实现类对象–简单工厂,体现多态

PS:以后仅更改加法逻辑,就动加法类就好,添加各种复杂运算就创建不同的操作子类继承计算器父类并且修改工厂类。

在这里插入图片描述

代码:

计算器父类
package com.clt.simplefactory.entity;public class Operation {
private double numberA=0; private double numberB=0; public double getNumberA() {
return numberA; } public double getNumberB() {
return numberB; } public void setNumberA(double numberA) {
this.numberA = numberA; } public void setNumberB(double numberB) {
this.numberB = numberB; } public double getResult(){
double result=0; return result; }}
加法子类
package com.clt.simplefactory.entity;public class OperationAdd extends Operation {
@Override public double getResult() {
double result=0; result=getNumberA()+getNumberB(); return result; }}
减法子类
package com.clt.simplefactory.entity;public class OperationSub extends Operation {
@Override public double getResult() {
double result=0; result=getNumberA()-getNumberB(); return result; }}
乘法子类
package com.clt.simplefactory.entity;public class OperationMul extends Operation {
@Override public double getResult() {
double result=0; result=getNumberA()*getNumberB(); return result; }}
除法子类
package com.clt.simplefactory.entity;public class OperationDiv extends Operation {
@Override public double getResult() {
double result=0; try{
result=getNumberA()/getNumberB(); } catch (ArithmeticException exc){
System.out.println("除数不能为0"); } return result; }}
简单工厂类
package com.clt.simplefactory.factory;import com.clt.simplefactory.entity.OperationAdd;import com.clt.simplefactory.entity.OperationDiv;import com.clt.simplefactory.entity.OperationMul;import com.clt.simplefactory.entity.Operation;public class OperationFactory {
public static Operation createOperate(String oprate){
Operation oper=null; switch (oprate){
case "+": oper=new OperationAdd(); break; case "-": oper=new OperationDiv(); break; case "*": oper=new OperationMul(); break; case "/": oper=new OperationDiv(); break; } return oper; }}
客户端类
package com.clt.simplefactory.client;import com.clt.simplefactory.entity.Operation;import com.clt.simplefactory.factory.OperationFactory;public class Client {
public static void main(String[] args) {
Operation oper; oper= OperationFactory.createOperate("+"); oper.setNumberA(1); oper.setNumberB(200); double result= oper.getResult(); System.out.println(result); }}
运行结果

在这里插入图片描述

3.参考书

基于《大话设计模式》

转载地址:http://opfdi.baihongyu.com/

你可能感兴趣的文章
GitHub 万星推荐:黑客成长技术清单
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
昨夜今晨最大八卦终于坐实——人类首次直接探测到了引力波
查看>>
如何优雅、机智地和新公司谈薪水?
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.147 - LeetCode1108
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mysql:sql create database新建utf8mb4 数据库
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql drop table (删除表)
查看>>
mysql:sql truncate (清除表数据)
查看>>
scrapy:xpath string(.)非常注意问题
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>