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

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

 2010-07-12 00:00:00 来源:WEB开发网   
核心提示:解耦是软件设计领域中一个永恒不变的话题,在软件设计过程中,从对象创建和引用小议解耦,为了最大程度降低各个应用组件之间的耦合性,以提高其可维护性和可复用性,以便在运行时委派其实际的计算工作,文章后续将围绕如何持有和初始化 ExpressionEvaluator实现展开介绍,出现了诸多设计原则和解决方案,例如面向接口编程

解耦是软件设计领域中一个永恒不变的话题,在软件设计过程中,为了最大程度降低各个应用组件之间的耦合性,以提高其可维护性和可复用性,出现了诸多设计原则和解决方案。例如面向接口编程,开 - 闭原则,依赖倒转原则等,另外更出现一系列设计模式。同时,由于如何实现解耦涉及面相当广,大至组件的划分和关联,小至对象的创建和引用,往往使软件开发人员感到迷惑。本文将从对象创建和引用的角度出发,介绍常见的一些解决方案,并比较之间的差别,期望读者能从一个侧面加深对解耦概念的理解。

应用场景

为方便后续介绍,本文假设一个计算器的应用。初始设计由以下几部分组成:

计算器界面类 CalculatorUI该类接受用户输入的表达式,执行一些输入校验工作,并将合法的表达式传递到具体的分析器,最终将计算结果返回给用户。

语法分析器接口,ExpressionEvaluator及其实现类 ExpressionEvaluatorImpl,其承担实际的计算工作。

在该应用场景中,CalculatorUI类需要持有指向 ExpressionEvaluator实现的引用,以便在运行时委派其实际的计算工作。文章后续将围绕如何持有和初始化 ExpressionEvaluator实现展开介绍,并依次提出多种解决方案。

清单 1. 计算器实现方式一 (new 操作符 )

public class CalculatorUI { 
 
  private ExpressionEvaluator expressionEvaluator; 
 
  public CalculatorUI() { 
    expressionEvaluator = new ExpressionEvaluatorImpl(); 
  } 
 
  public String evaluate(String expression) { 
    if (expression == null || expression.isEmpty()) { 
      throw new IllegalArgumentException("[" + expression + "] 
        is not a valid expression"); 
    } 
    return expressionEvaluator.evaluate(expression); 
  } 
 }   

1 2 3 4 5 6  下一页

Tags:对象 创建 引用

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