实验2 (简单)工厂模式
result = getA() + getB();
return result;
}
}
// -运算类
class Sub extends Operat {
public double getResult() {
double result = 0;
result = getA() - getB();
return result;
public double getResult() {
double result = 0;
result = getA() / getB();
return result;
}
}
//工厂类
class Factory {
public static Operat oper =null;
public static Operat createOperat(char op) {
public static void main(String[] args) throws IOException {
OperateFactory factory;
Operat oper;
System.out.println("*******工厂模式计算器*******");
Scanner s = new Scanner(System.in);
public double getResult() {
double result = 0;
result = getA() + getB();
return result;
}
}
//具体产品
class Sub extends Operat {
public double getResult() {
double result = 0;
import java.util.Scanner;
abstract class Operat {
private double a, b;
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
(二)实验内容
分别使用简单工厂模式、工厂模式设计一个简单的计算器,使设计遵循面对对象设计原则,实现代码重用。有无窗体界面均可,至少能够实现加、减运算。
四.实验结果
1.简单工厂模式代码及运行结果(截图)
package com.JFactory.www;
import java.io.IOException;
public Operat creatOperat(){
return new Add();
}
}
//具体工厂
class SubFactory extends OperateFactory{
public Operat creatOperat(){
return new Sub();
}
}
//主函数
class Calc {
System.out.println("输入第一个运算值");
double a = s.nextDouble();
System.out.println("输入运算符号");
char op = s.next().charAt(0);
System.out.println("输入第二个运算值");
double b = s.nextDouble();
switch(op)
{
case '+':
oper=new Add();
break;
case '-':
oper=new Sub();
break;
case '*':
oper=new Mul();
break;
case '/':
oper=new Div();
break;
}
return oper;
}
}
class Calc {
import java.io.IOException;
import java.util.Scanner;
//抽象产品
abstract class Operat {
private double a, b;
public double getA() {
return a;
}
public void setA(double a) {
result = getA() - getB();
return result;
}
}
//抽象工厂
abstract class OperateFactory{
abstract Operat creatOperat();
}
//具体工厂
class AddFactory extends OperateFactory{
}
}
// *运算类
class Mul extends Operat {
public double getResult() {
double result = 0;
result = getA() * getB();
return result;
}
}
// /运算类
class Div extends Operat {
}
else if(op == '-'){
factory = new SubFactory();
oper = factory.creatOperat();
oper.setA(a);
oper.setB(b);
double r = oper.getResult();
System.out.println(oper.getA()+""+op+""+oper.getB()+"="+r);
double a =s.nextDouble();
System.out.println("运算符");
char op = s.next().charAt(0);
System.out.println("第二个运算数据");
double b = s.nextDouble();
oper=Factory. createOperat(op);
实验报告
系别
班级
学号
姓名
时间
地点
2016406
课程名称
设计模式
实验名称
简单工厂、工厂模式
实验过程
一.实验目的与要求
1、熟练使用简单工厂模式解决实际问题
2、熟练使用工厂方法模式解决实际问题
二.实验设备
1、微型计算机
2、编程语言开发平台
三.实验原理和实验内容
(一)实验原理:
简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
abstract public double getResult();
}
//具体产品
class Add extends Operat {
if(op == '+'){
factory = new AddFactory();
oper = factory.creatOperat();
oper.setA(a);
oper.setB(b);
double r = oper.getResult();
System.out.println(oper.getA()+""+op+""+oper.getB()+"="+r);
}
else{
System.out.println("输入错误");
}s.close();
}
}
工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的哪一个具体产品类。
public static void main(String[] args) throws IOException {
Operat oper;
Scanner s = new Scanner(System.in);
System.out.println("*简单工厂模式计算器*");
System.out.println("第一个运算数据");
return b;
}
public void setB(double b) {
this.b = b;
}
abstract public double getResult();