首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向对象设计问题

面向对象设计问题
EN

Stack Overflow用户
提问于 2012-02-05 18:22:52
回答 1查看 110关注 0票数 0

我正在做一个关于图论的项目,并且正在实现一些图算法。

我想分开

  • 算法的代码(如BFS、DFS.)、
  • 图形处理代码(例如图类本身、边和顶点handling..etc)和
  • (与GUI相关的代码

)

我有两个与申请的设计有关的问题:

  1. 应该为每个包使用一个单独的包吗?另外,任何人可以添加的任何关于连接和使这些部件合作的内容都是helpful.
  2. What设计模式,我应该在算法代码中使用吗?它应该是静态类、单例还是任何其他建议?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-05 18:47:01

没有一般的答案。这个决定取决于您是否以及如何计划重用您正在开发的系统。

正如您所指出的,使用众所周知的设计模式是个好主意。我不知道您的架构目标,但我可以推荐以下一般指导方针:

在自己的包中设计“模型”(数据结构)。该层应该只包含系统的“模型”和“状态”表示:图、顶点、方向、权重等。这一层还应该包含模型维护逻辑(向图中添加一个节点、获取节点、获取顶点、创建顶点、添加权重等),查看结构模式(组合、外观等),并查看它们是否可以应用到模型中。

在一个单独的层中实现这些算法。大多数情况下,使这些组件“无状态”是一个好主意(静态函数在模型上执行操作)。查看一下行为模式(访问者、责任链、Iterator、解释器、命令等),看看是否可以应用其中的任何一种。

使用观察者设计模式来设计您的“呈现”层(显示、可视化)。此模式允许您分离观察到的(模型)和视图,并最终为同一模型提供几种类型的视图。

正如我所说,没有普遍的解决办法。这些只是一些旨在实现解耦、易于维护和可重用的软件的想法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9151749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档