简单工厂模式 类图  通过一个工厂类,以一个条件来创建对应的对象 - //业务功能
- public interface ICalculation {
- double getResult(double numA, double numB);
- }
- public class CalcAdd implements ICalculation {
-
- @Override
- public double getResult(double numA, double numB) {
- System.out.println("加法");
- return numA + numB;
- }
-
- }
- public class CalcSubtract implements ICalculation {
-
- @Override
- public double getResult(double numA, double numB) {
- System.out.println("减法");
- return numA - numB;
- }
-
- }
- /*
- * 简单工厂模式 关注:对象的创建
- * 建立一个工厂类,对实现了同一接口的或者是存在继承关系的一些类进行实例的创建
- */
- public class Test4Simple {
- public static void main(String[] args) {
- // String operation = "/";
- String operation = "+";
- // String operation = "-";
- // String operation = "*";
- double numA = 182, numB = 33;
- ICalculation createCalc = CalcSimpleFactory.createCalc(operation);
- double result = createCalc.getResult(numA, numB);
- System.out.println(result);
- }
- }
复制代码 简单工厂的缺陷: 简单工厂创建产品时需要传递相应的参数,如果传递不正确就取不到对象了。 改进:多方法创建不同产品 类图  - public class CalcMultipleFactory {
-
- public static ICalculation produceAdd() {
- return new CalcAdd();
- }
-
- public static ICalculation produceSubtract() {
- return new CalcSubtract();
- }
-
- public static ICalculation produceMultiply() {
- return new CalcMultiply();
- }
-
- public static ICalculation produceDivide() {
- return new CalcDivide();
- }
- }
- public class Test4Multiple {
-
- public static void main(String[] args) {
- double numA = 182, numB = 33;
-
- ICalculation createCalc = CalcMultipleFactory.produceAdd();
- double result = createCalc.getResult(numA, numB);
- System.out.println(result);
-
- createCalc = CalcMultipleFactory.produceSubtract();
- result = createCalc.getResult(numA, numB);
- System.out.println(result);
-
- createCalc = CalcMultipleFactory.produceMultiply();
- result = createCalc.getResult(numA, numB);
- System.out.println(result);
-
- createCalc = CalcMultipleFactory.produceDivide();
- result = createCalc.getResult(numA, numB);
- System.out.println(result);
- }
- }
复制代码 抽象工厂模式 里面有几个概念:抽象工厂、实体工厂、抽象产品、实体产品 抽象工厂:定义创建产品的抽象方法 实体工厂:具体的创建哪种产品 抽象产品:一个接口或基类 实体产品:实现具体功能,或派生 类图  |