WEB开发网
开发学院软件开发Java 从对象创建和引用小议解耦 阅读

从对象创建和引用小议解耦

 2010-07-12 00:00:00 来源:WEB开发网   
核心提示: 清单 1 展示了一种非常典型的实现方式,即直接在 CalculatorUI 中使用 new 操作符创建 ExpressionEvaluator 的实例,从对象创建和引用小议解耦(2),该种方式虽然简单明了,但是将 ExpressionEvaluator 的实现类 ExpressionEvalua

清单 1 展示了一种非常典型的实现方式,即直接在 CalculatorUI 中使用 new 操作符创建 ExpressionEvaluator 的实例。该种方式虽然简单明了,但是将 ExpressionEvaluator 的实现类 ExpressionEvaluatorImpl 被硬编码在 CalculatorUI 的代码中,两者的耦合程度相当高。设想该计算器应用程序在后续使用时,如果希望更改成其他 ExpressionEvaluator 的实现,则必须修改 CalculatorUI 的代码并重新编译。

清单 2. 计算器实现方式二 ( 工厂模式 )

public class ExpressionEvaluatorFactory { 
 
  public static ExpressionEvaluator createExpressionEvaluator() { 
    return new ExpressionEvaluatorImpl(); 
  } 
 } 
 
 public class CalculatorUI { 
 
  private ExpressionEvaluator expressionEvaluator; 
 
  public CalculatorUI() { 
    expressionEvaluator = ExpressionEvaluatorFactory.createExpressionEvaluator(); 
  } 
   
  ...... 
 }   

针对 清单 1 中所示实现方式的缺点,在 清单 2 中引入常见的静态工厂设计模式。引入工厂类 ExpressionEvaluatorFactory 后,CaculatorUI将不需要自行创建和初始化 ExpressionEvaluator 的实现,而是将相关工作委派给工厂类。相对于第一种实现方式,CalculatorUI 脱离了与 ExpressionEvaluatorImpl 之间的直接耦合,对其而言,它只需要调用 ExpressionEvaluatorFactory的 createExpressionEvaluator方法即可。使用方式二的计算器应用程序如果需要更换 ExpressionEvaluator实现,无需修改 CalculatorUI的代码,只要改动 ExpressionEvaluatorFactory 工厂类的代码。正如通常所说的,客户端代码不需要修改了,而且当应用程序多处使用 ExpressionEvaluatorFactory 时,其优势更加明显。

上一页  1 2 3 4 5 6 7  下一页

Tags:对象 创建 引用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接