第一章——简单工厂设计模式
这一章的例题是一个计算器。
首先将运算抽象出来建立一个虚类或者接口
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);
}
}