大话设计模式——简单工厂

 

第一章——简单工厂设计模式

这一章的例题是一个计算器。

首先将运算抽象出来建立一个虚类或者接口

package com.icss.calculater;

public abstract class Operate {
 public abstract double operate(double a,double b) throws Exception;
}

然后子类是加减乘除四则运算。

package com.icss.calculater;//加法

public class Addition extends Operate {

 @Override
 public double operate(double a,double b) {
  
  return a+b;
 }

}

减法和乘法类似不写出来了。除法有个异常情况。

package com.icss.calculater;

public class Div extends Operate {

 @Override
 public double operate(double a, double b)throws Exception {
  if(b==0)//除数为0,抛出异常
  {
   throw new MyException("除数为0");//除数为0异常。

  }
  return a/b;
 }

}

然后是主函数

package com.icss.calculater;
import java.util.*;
public class Counter {

 public static void main(String[] args) throws Exception {//有一个自定义异常
  System.out.println("请输入第一个数");
  Scanner input=new Scanner(System.in);
  int num1=input.nextInt();//输入的第一个运算的数
  System.out.println("请输入要做的运算 1.+;2.-;3.*;4./");
  String ope=input.next();//输入的运算符
  char a=ope.charAt(0);//将输入的运算符String类型的转为char类型。因为switch只能判断int和char型。
  if(a!='+'&&a!='-'&&a!='*'&&a!='/')
  {
   throw new MyException("没有您选择的运算");//一个自定义异常。输入的除开规定的错误运算符。
  }
  System.out.println("请输入第二个数");
  int num2=input.nextInt();
   Operate op=null;//这个就是简单工厂模式。建立一个父类的引用。然后根据条件指向子类对象。感觉就是一个多态的应用。
  switch(a)
  {
   case '+':  op=new Addition();break;
   case '-':  op=new Subtraction();break;
   case '*':  op=new Mul();break;
   case '/':  op=new Div();break;
   
  }
  System.out.println(op.operate(num1, num2));
  
  
 }

}

1、每次写代码的时候要想想要实现的任务,从总到分,从高到低。先构思。不能直接用面向过程的方法写程序。

2、要思考通过封装,继承,多态把程序的耦合度降低。更加灵活,容易修改,易于复用。总得就是高内聚,低耦合。

3、简单工厂设计模式——用一个单独的类来做一个创造实例的过程,这就是工厂。

4、switch()语句中括号里面只能是int或者char型。

5、String->char。 

  String s="abc";
  char c=s.charAt(2);
  System.out.println(c);      结果为 b

6、自定义异常 不能规定异常的情况,只能用if判断 然后throw。

public class MyException extends Exception {
 public MyException(String msg)
 {
  super(msg);
 }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值