简单工厂模式加减乘除器

 1 package com.main.cul;
 2 import java.util.Scanner;
 3 import com.factory.Operation;
 4 public class Demo {
 5     private static double result;
 6     public static void main(String[] argv){
 7
 8     try{
 9
10         Scanner in=new Scanner(System.in);
11         System.out.print("请输入数字A:");
12         double numA=in.nextDouble();
13
14         System.out.print("请选择操作+-*/(加减乘除):");
15         String strOper=in.next();
16         char  operate=strOper.charAt(0);
17
18         System.out.print("请输入数字B:");
19         double numB=in.nextDouble();
20         System.out.println("您输入的数字A:"+numA);
21         System.out.println("您输入的操作:"+operate);
22         System.out.println("您输入的数字B:"+numB);
23         Operation oper=OperationFactory.createOperate(operate);
24         Demo.result=oper.getResult(numA,numB);
25         System.out.print("结果为"+result);
26
27     }catch (Exception e) {
28         // TODO: handle exception
29         e.printStackTrace();
30     }
31     }
32 }

工厂类

 1 package com.main.cul;
 2
 3 import com.factory.AddOper;
 4 import com.factory.DivOper;
 5 import com.factory.MulOper;
 6 import com.factory.Operation;
 7 import com.factory.SubOper;
 8
 9
10
11 public abstract class  OperationFactory {
12
13     public static Operation createOperate(char ope){
14         Operation oper =null;
15         switch (ope) {
16         case ‘+‘:
17             oper =new AddOper();
18             break;
19         case ‘-‘:
20             oper =new SubOper();
21             break;
22         case ‘*‘:
23             oper =new MulOper();
24             break;
25         case ‘/‘:
26             oper =new DivOper();
27             break;
28         }
29         return oper;}
30 }

加减乘除类:

1 package com.factory;
2
3 public abstract class Operation {
4     protected double numA;
5     protected double numB;
6     protected double result;
7     public abstract double getResult(double numA, double numB);
8 }
 1 package com.factory;
 2
 3 public class AddOper extends Operation {
 4
 5     public double getResult(double numA,double numB){
 6         result=numA+numB;
 7         return result;
 8
 9     }
10 }
package com.factory;
public class SubOper extends Operation {
    public double getResult(double numA,double numB){
        result=numA-numB;
        return result;

    }
}
1 package com.factory;
2 public class MulOper extends Operation {
3     public double getResult(double numA,double numB){
4         result=numA*numB;
5         return result;
6
7     }
8 }
 1 package com.factory;
 2 public class DivOper extends Operation {
 3     public double getResult(double numA,double numB){
 4         if(numB==0){
 5
 6             System.out.print("除数不能为0");
 7         }
 8         result=numA/numB;
 9         return result;
10
11     }
12 }
时间: 2024-11-02 21:39:16

简单工厂模式加减乘除器的相关文章

简单工厂模式--加减乘除运算

学习来自<大话设计模式> 下面基于简单的<加减乘除运算>实例来讲讲实用简单工厂模式:<备注:以后根据认识的加深,可以添加和修改内容> 需求分析:希望程序提供“加减乘除”四种功能. 功能分析:四种功能都是并列的,相互独立的. 拓展分析:很有可能拓展新的功能,比如“开根运算”. 如何设计: 1.根据“功能分析”可以将四种功能都归并一个父类出来,然后创建四个子类继承它,并且提供空的方法(OC中模拟抽象方法或者虚函数),这四个子类分别都要继承并重写实现这个空方法.这样,一个抽象

设计模式---(简单工厂模式,工厂模式,抽象工程模式),单例模式,代理模式,装饰器

简单工厂模式    简单工厂模式并不属于GoF的23种设计模式.     那么为什么我要用工厂模式呢?请看下面的一段程序.  #include  <iostream> using  namespace  std; class  Fruit  { public:     Fruit(string  name)  {         this-­‐>name  =  name;         if  (name  ==  "apple")  {      

【一起学设计模式】状态模式+装饰器模式+简单工厂模式实战:(一)提交个订单我到底经历了什么鬼?

前言 之前在我的博客(一枝花算不算浪漫)中已经更新过两篇设计模式相关的内容 [一起学设计模式]策略模式实战一:基于消息发送的策略模式实战 [一起学习设计模式]策略模式实战二:配合注解 干掉业务代码中冗余的if else... [一起学设计模式]访问者模式实战:权限管理树删节点操作 [一起学设计模式]命令模式+模板方法+工厂方法实战: 如何优雅的更新商品库存... 上面内容都是基于真实业务场景精简后的设计(工作中真实场景使用到的). 之前为了学习设计模式,看过网上很多相关博客讲解,大都是画下UML

C# 设计模式 简单工厂模式

设计模式(C#版)--简单工厂模式 为什么要用设计模式? 1.设计模式是前人根据经验总结出来的,使用设计模式,就相当于是站在了前人的肩膀上. 2.设计模式使程序易读.熟悉设计模式的人应该能够很容易读懂运用设计模式编写的程序. 3.设计模式能使编写的程序具有良好的可扩展性,满足系统设计的开闭原则.比如策略模式,就是将不同的算法封装在子类中,在需要添加新的算法时,只需添加新的子类,实现规定的接口,即可在不改变现有系统源码的情况下加入新的系统行为. 4.设计模式能降低系统中类与类之间的耦合度.比如工厂

简单工厂模式

目前正在看<大话设计模式>,写此系列的文章记录下学习的经过. 简单工厂模式 先看如下代码,使用面向对象的原理实现计算器功能 Operation运算类 1 public class Operation 2 { 3 private double numberA = 0; 4 private double numberB = 0; 5 6 public double NumberA 7 { 8 get { return numberA; } 9 set { numberA = value; } 10

简单工厂模式( Simple Factory Pattern )

1. 简单工厂模式( Simple Factory Pattern ) 1.1. 模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮.矩形按钮.菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式. 1.2

设计模式之简单工厂模式

设计模式之简单工厂模式 动机:         不暴露实例化逻辑来创建对象.通过公共的接口创建新的对象.         这是一个简单的实现,客户端需要一个product,但是client不直接使用new对象,而是通过提供需要的对象信息来找factory得到新的product.         这个factory实例化一个具体的product并返回(转化成抽象的类),client段使用这个抽象的类而不用考虑它具体的实现. 应用举例:        也许工厂模式是使用最多的模式之一.举个例子,一个

[python实现设计模式]-3.简单工厂模式

预备知识: 开放封闭原则(Open-Closed Principle OCP) Software entities(classes,modules,functions etc) should open for extension ,but close for modification. 所谓开放封闭原则就是软件实体应该对扩展开放,而对修改封闭.开放封闭原则是所有面向对象原则的核心. 软件设计本身所追求的目标就是封装变化,降低耦合,而开放封闭原则正是对这一目标的最直接体现. 对扩展开放,意味着有新

设计模式学习-简单工厂模式

1.什么是简单工厂模式 简单工厂模式属于类的创建模式,又叫做静态工厂模式,是通过专门建立一个类负责创建其他类的实例,被创建的类通常有着共同的父类,之所以称之为工厂,就是因为负责创建其他类的类能够根据传递参数的不同,产生不同的实例,使得程序满足松耦合.重用度高.易修改维护的特点. 2.简单工厂模式的实现 下面举例说明工厂模式,比如说我们要实现一个两个数的size运算,那么如何去设计能过做到我们上面说的特性.首先我们要设定一个运算的终极父类: #include <iostream> #includ