关闭

设计模式-对软件设计中耦合程度的思考

标签: 设计模式简单工厂模式耦合度
542人阅读 评论(3) 收藏 举报
分类:
  软件耦合度高的模式,一般对象数少,可能容易理·32解写;耦合度低的模式,对象数相对多。拿计算器的业务来讲:

耦合度较高的版本:

private static double getResult(double n1, double n2, string operation)
{
  double double rtnResult;
  switch(operation)
  {
    case "+":
    ...
    break;
    case "-"
    ...
    break;
    case "*"
    ...
    break;
    case "/"
    ...
    break;   
  }
  return rtnResult;
}

   计算器的加减乘除操作通过一个函数,直接就实现了主要的业务逻辑。这种方式的优点是没有形成新的业务对象;缺点是扩展性差、后期不易维护等。显然加减乘除是主要的业务操作,所以需要改造为4个业务对象,每个业务对象封装自己的操作,以及一个类能管理这4个模块。并且,这4个模块功能是并列的,这样可以套用“工厂模式”来实现。

  UML如下所示:

这里写图片描述

   类图很简单,4个业务类分别实现接口,MangeOper类引用4个业务对象,确定接口的实现类,UI客户端引用这个ManageOper类,告诉它用户选择了加减乘除中的哪个操作。

  在计算器这个例子中,以上设计模式是好的,主要业务对象耦合度较低,以后想要扩展其他操作,只需要写出很多个新的业务类即可。但是,是不是所有的设计都要耦合度尽可能的低?

  这是一个好问题!

  问题无绝对! 不是说松耦合就一定好,紧耦合就一定不好。如果构成某个软件的模块地位非常低,那么就要考虑是不是要设计的耦合度很低,灵活性很强了?!

  因为我完全不想花太多精力去编写它,并且以后它几乎不怎么改变,这样的话,采取紧耦合也未尝不是一种好的设计方法;换句话说,如果这是公司的一个重点业务,那么,需要写的耦合度小写,好好构思相应的设计模式来。

  设计模式跟着业务和未来的业务走!

2
0

猜你在找
深度学习基础与TensorFlow实践
【在线峰会】前端开发重点难点技术剖析与创新实践
【在线峰会】一天掌握物联网全栈开发之道
【在线峰会】如何高质高效的进行Android技术开发
机器学习40天精英计划
Python数据挖掘与分析速成班
微信小程序开发实战
JFinal极速开发企业实战
备战2017软考 系统集成项目管理工程师 学习套餐
Python大型网络爬虫项目开发实战(全套)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    Leetcode Solutions in Github

    Click me

    Leetcode solutions in Github, including tags: Array, HashTable, Stack, Queue, LinkedList, Tree, Graph,...

    leetcode-manager

    Click me

    Current Leetcode manager: it's used by Entity Framework, WinForms, Sql Server to manage leetcode questions that we have done. Functions include tags creation, revise and deletion, and questions creation, edit and deletion.

    个人资料
    • 访问:67784次
    • 积分:3612
    • 等级:
    • 排名:第8611名
    • 原创:232篇
    • 转载:0篇
    • 译文:0篇
    • 评论:46条
    博客专栏