Book-No.03 大话设计模式

1、面向对象的设计思想:

  • 可维护:要改,只需要更改要更改的地方,不需要更改的地方不动, 提取可能会发生改变的代码
  • 可复用:一次编写,多次重复使用,公共部分提出,避免代码冗余
  • 可扩展:可以添加新的需求,而不影响以前的功能,亦不需要对以前代码做改动(或者改动最少),实现高内聚,低耦合
  • 灵活性好:可能满足多种需求

2、简单工厂设计模式

package com.shma.simpleFactoryPattern;

/**
 * 简单工厂模式设计一个计算器,实现加减乘除
 * @author Administrator
 *
 */
public class TestCalculatorApp {

	public static void main(String[] args) {
		OperEnum tmpEnum = OperEnum.ADD;
		
		Operation operation = OperationFactory.getOperation(tmpEnum);
		operation.setNumberA(1.3);
		operation.setNumberB(1.5);
		if(operation != null) {
			System.out.println(operation.operation());
		}
	}
}

 

package com.shma.simpleFactoryPattern;

public class OperationFactory {

	public static Operation getOperation(OperEnum oper) {

		switch(oper) {
			case ADD :
				return new AddOper();
			case SUB :
				return new SubOper();
			case MUL :
				return new MulOper();
			case DIV :
				return new DivOper();
			default :
				return null;
		}
	}
}

 

package com.shma.simpleFactoryPattern;

public enum OperEnum {

	ADD, SUB, MUL, DIV
}

 

package com.shma.simpleFactoryPattern;

/**
 * 实现计算器的抽象操作类
 * @author Administrator
 *
 */
public abstract class Operation {

	protected double numberA = 0;
	protected double numberB = 0;
	
	public abstract double operation();

	public double getNumberA() {
		return numberA;
	}

	public void setNumberA(double numberA) {
		this.numberA = numberA;
	}

	public double getNumberB() {
		return numberB;
	}

	public void setNumberB(double numberB) {
		this.numberB = numberB;
	}
	
	
}

 

package com.shma.simpleFactoryPattern;

/**
 * 加法操作
 * @author Administrator
 *
 */
public class AddOper extends Operation {

	@Override
	public double operation() {
		return numberA + numberB;
	}

}

package com.shma.simpleFactoryPattern;

public class DivOper extends Operation {

	@Override
	public double operation() {
		if(numberB == 0) {
			return -1;
		}
		return this.numberA / this.numberB;
	}

}

package com.shma.simpleFactoryPattern;

/**
 * 乘法运算
 * @author Administrator
 *
 */
public class MulOper extends Operation {

	@Override
	public double operation() {
		return numberA * this.numberB;
	}

}

package com.shma.simpleFactoryPattern;

/**
 * 减法运算
 * @author Administrator
 *
 */
public class SubOper extends Operation {

	@Override
	public double operation() {
		return this.numberA - this.numberB;
	}

}

 3、UML类图

 Book-No.03 大话设计模式_第1张图片

矩形框:类(类分为三层,第一层为类名,第二层为类的字段或者属性,第三层为类的行为或方法,+表示public,-表示private,#表示protected,类名为斜体则该类为抽象类)

矩形框:接口(接口分为两层,第一层接口名,上方为<<interface>>,第二层为接口的行为或者方法,+表示public,-表示private,#表示protected

空心三角形+实线:继承关系(箭头指向父类)

空心三角形+虚线:实现接口(箭头指向接口)

实线箭头:表示关联关系(被指向的为指向的一个属性)

空心菱形+实线箭头:表示聚合关系(依赖关系弱)

实心菱形+实线箭头:表示组合关系(强的依赖关系,被包含的是包含的一部分,不可分隔

虚线箭头:表示依赖关系

 

 

 

 

 

你可能感兴趣的:(设计模式)