设计模式 之 简单工厂模式

业务和界面分离

面向对象:封装、继承、多态。

封装 -- 简化重复代码;封装过程和数据;只关注使用,不关注实现。

继承 -- 提高代码复用性、维护性(新增功能时,只需新增一个子类,无需修改旧代码文件,安全性提高);让类与类之间产生了关联,是多态的前提。

多态 -- 运行时绑定;提高代码扩展性;概念:用基类的引用指向子类的对象;同一操作作用于不同的对象,可以产生不同的执行结果。

  1. 封装、继承都是为了解决代码重用,多态则是为了扩展。
  2. 继承会提高耦合度,而多态则是把系统分解成一个个子模块,子模块提供稳定的接口,从而降低耦合度。
  3. 模块之间尽量使用模块接口访问,而不是随意引用其他模块的成员变量。

面向对象的编程,并不是类越多越好。类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。

package o1SimpleFactory;

/**
 * 运算类 基类
 * 属性 a、b 以及getResult方法
 */
public class Operation {

	private double a;
	private double b;
	
	public double getA() {
		return a;
	}
	public void setA(double a) {
		this.a = a;
	}
	
	public double getB() {
		return b;
	}
	public void setB(double b) {
		this.b = b;
	}
	
	public Object getResult() {
		return null;
	}
	
}
package o1SimpleFactory;

/**
 * 子类 加法类
 * getResult 具体功能实现
 */
public class Add extends Operation {

	@Override
	public Object getResult() {
		return super.getA() + super.getB();
	}
}
package o1SimpleFactory;

/**
 * 子类 乘法类
 * getResult 具体功能实现
 */
public class Mul extends Operation {

	@Override
	public Object getResult() {
		return super.getA() * super.getB();
	}
}
package o1SimpleFactory;

/**
 * 工厂类 创造具体运算类
 */
public class OperateFactory {
	
	public static Operation getOperation(String opr) {
		Operation operation = null;
		switch (opr) {
		case "+":
			operation = new Add();
			break;
		case "-":
			operation = new Sub();
			break;
		case "*":
			operation = new Mul();
			break;
		case "/":
			operation = new Div();
			break;
		}
		return operation;
	}

}
package o1SimpleFactory;

/**
 * 调用者 界面
 * 只关注结果,不关注具体实现
 */
public class Test {

	public static void main(String[] args) {
		Operation op = OperateFactory.getOperation("+");
		op.setA(4);
		op.setB(6);
		System.out.println(op.getResult());
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值