博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模式1. 简单工厂模式-Java
阅读量:4035 次
发布时间: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://ksfdi.baihongyu.com/

你可能感兴趣的文章
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Word Break(python)
查看>>
【剑指offer】面试题26:复杂链表的复制
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Clone Graph(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java swing最简单实例(2) 往JFrame里面放一个容器或组件
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>
从头开始学习jsp(2)——jsp的基本语法
查看>>
从头开始学习JSP(3)——一些配置
查看>>