以《大话设计模式第一章为例》 计算器
1:抽象类 运算类Operate
/**
* @author admin
* 抽象类 Operate
*/
public abstract class Operate {
public int number1;
public int number2;
//获取结果的方法,用于子类重载
public int getResult(int number1, int number2)
{
return 0;
}
}
2:具体实现类 加法运算 除法运算
/**
* @author admin
* Operate实现类 + 法运算
*/
public class OperateAdd extends Operate
{
@Override
public int getResult(int number1, int number2) {
return number1 + number2;
}
}
/**
* @author admin
* Operate实现类 / 法运算
*/
public class OperateDivision extends Operate
{
@Override
public int getResult(int number1, int number2) {
if (0 == number2)
{
try {
throw new Exception("除数不能为 0 ");
} catch (Exception e) {
e.printStackTrace();
}
}
return number1 / number2;
}
}
3:工厂类 用于生产具体的运算类
/**
* @author admin
* 工厂类 用于生产具体的操作类 + /
*/
public class OperateFactory {
Operate oper = null;
public Operate createOperate(String operate)
{
switch(operate)
{
case "+" : oper = new OperateAdd();
case "/" : oper = new OperateDivision();
}
return oper;
}
}
4 : 计算器显示类 目前其实就是一个main方法
/**
* @author admin
* 计算器显示器类
*/
public class OperateView {
public static void main(String[] args) {
int number1 = 0;
int number2 = 0;
int result = 0;
Scanner in = new Scanner(System.in);
try{
System.out.println("请输入第一个数字:");
number1 = in.nextInt();
System.out.println("请输入第二个数字:");
number2 = in.nextInt();
System.out.println("请输入运算符 :+ 或者 /:");
String operate = in.next();
System.out.println(operate);
//创造工厂,用来生产具体的Operate
OperateFactory operateFactory = new OperateFactory();
//生产出具体的Operate子类
Operate oper = operateFactory.createOperate(operate);
result = oper.getResult(number1, number2);
System.out.println("结果为:" + result);
}
catch(Exception e)
{
in.close();
System.out.println("您的输入有误" + e.getMessage() + e.getStackTrace());
}
}
}
5:简单工厂模式总结
就是创造一个工厂来生产你所想要的实现类