在处理需要转换为OO设计的问题陈述时,您遵循的步骤是什么?我知道这种方法可能是主观的,取决于问题而且各有所不同,但我确信每个优秀的设计师都必须遵循一些基本的通用步骤,同时将问题陈述分解为对象和类,并进一步具体化设计。 只是试图忍受让我们说新的蜜蜂设计师想要遵循的程序和我一样。
答案 0 :(得分:2)
我建议按照以下步骤操作。 1.编写用例。它将帮助您理解问题,它应包含基本的执行流程(正确的路径)和备用路径。 2.进行语言分析,找出课程和方法。 (如果您知道其他任何好的方法,那么这是可选的。) 3.使用SOLID主体设计类。 4.记住封装,继承,多态。如果你不记得他们把它写在纸上或贴在你的桌子上。 还有一件事你应该记住“有什么不同之处”。 6.在需要时使用设计模式。不要对代码强制执行设计模式。尝试将您的设计问题映射到任何设计模式。
我还建议“Head First OOAD”一书。倾向于OOAD是一本非常好的书。
答案 1 :(得分:1)
OO设计中的一个重要步骤是“单一责任原则”。这是良好设计的重要基础。您的设计中的http组件将执行http通信以检索作业,但肯定会避免处理这些作业。 Jobs处理器必须是独立的。这些(http和作业处理器)都有自己的职责分配给他们。这更像是一般视图,在组件内部,您还可以创建遵循此原则的更多类。
答案 2 :(得分:1)
我推荐免费在线图书http://my.safaribooksonline.com/0131489062/ch01。它介绍了一些架构概念以及UML。 UML是用于绘制设计的图表工具,对于在坐下来编码之前规划大型设计非常有用。
答案 3 :(得分:1)
当我开始时,我不会对这个答案感到满意,但是......在成为第二天性之前需要进行大量的学习和练习。我能给出的最好建议是从你尊重的人那里学习设计,阅读一些好书(GOF设计模式是一个很好的起点),并请有经验的人来挑选你的设计。
了解单一责任原则之类的内容,但您还需要了解“什么是合适的尺寸”与过度工程的内容。这最终将取决于要求。
答案 4 :(得分:1)
在阅读问题时,请保留一个名词列表,因为它们可能会成为类,而动词可能会成为方法。 之后,再次通过它们并验证。
你必须阅读有关设计模式的书籍(Head First Design Patterns非常好。)因为它们会让你对如何更好地设计有一个很好的洞察力。
不要忘记阅读建筑模式。
答案 5 :(得分:0)
从更广泛的角度理解需求对于设计能够长期存在的东西非常重要。了解领域,业务,用户需求,客户期望,识别无数细节对设计软件也很重要。可能存在N个影响设计的事物,例如使用频率,使用时间,工作流程的复杂性,用户的优先级,系统的约束,资源,开发者技能,时间,预算等等。您应该能够想象出要解决或要求的问题的更大图景。 这种分析应该导致识别系统中的常量以及将来可能会有什么变化。设计应该抽象出可能发生变化的部分。新要求不应导致重新设计。划分和规则是简化复杂性的公式。设计专用的特定包或模块。定义它们之间的关系。识别重要的用例并尝试可视化您的设计如何处理或满足用例。使用类,类型和接口进行详细设计。根据需要遵循合适的设计模式。不要忘记SOLID主体。可测试性,可扩展性,可维护性,复杂性是在开始时需要考虑的事项。你需要的不仅仅是技能。因此有些人认为它是一门艺术。没有任何设计可以完美。做错误,向他们学习,不要重复。多数民众赞成在我身上。我的回答可能不是所考虑的问题的准确,但希望会有所帮助。