Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 编程的设计模式_Design Patterns_Software Design - Fatal编程技术网

Design patterns 编程的设计模式

Design patterns 编程的设计模式,design-patterns,software-design,Design Patterns,Software Design,我正在努力寻找学习正确的软件工程设计的最佳方法,并希望得到任何帮助,指导我在设计项目之前对项目进行简单的剖析,并找出应该实现的最有用的设计模式。我读过“四人帮”,但觉得它缺少了一种为给定软件选择适当设计模式的可靠方法 我不确定专业人士是如何做到这一点的,但我确信这是通过多年的经验实现的。然而,在我多年的编程之后,我还没有找到一个发现设计模式的过程 谢谢, Al如果您对优秀的软件设计感兴趣,请阅读:或。GoF所描述的设计模式并不是指总体的软件设计,而是指如何在特定环境下解决常见问题 请记住,软件设

我正在努力寻找学习正确的软件工程设计的最佳方法,并希望得到任何帮助,指导我在设计项目之前对项目进行简单的剖析,并找出应该实现的最有用的设计模式。我读过“四人帮”,但觉得它缺少了一种为给定软件选择适当设计模式的可靠方法

我不确定专业人士是如何做到这一点的,但我确信这是通过多年的经验实现的。然而,在我多年的编程之后,我还没有找到一个发现设计模式的过程

谢谢,
Al

如果您对优秀的软件设计感兴趣,请阅读:或。GoF所描述的设计模式并不是指总体的软件设计,而是指如何在特定环境下解决常见问题

请记住,软件设计不是一成不变的,一切都取决于上下文。主要目标是向用户提供所要求的(正确的)特性,使代码可测试、可维护,并且在一定的时间和预算限制内


在敏捷环境中,通常没有人对其中的每一个细节进行完整的设计,但软件的体系结构是在敏捷过程中出现的。因此,熟悉敏捷方法,如Scrum、看板和极限编程。

在正确的时间为正确的场景选择和应用正确的设计模式始终是一个挑战。虽然设计模式应该作为理论来学习,但让人有兴趣的是,有人能够确定做出正确技术决策的时间和地点

对于学习者来说,我的建议是尽可能多地了解模式及其背后的概念;并通过给定的、可理解的示例使其保持更新。然后,在您的需求澄清或特性设计阶段(如果是关于敏捷的,则为梳理/规划会议),或开发阶段(敏捷:在Sprint中),或在代码审查阶段,尝试查看编码设计和头脑风暴,以找到您已知的模式的匹配映射。通过实践和经验,这项技能将得到提高,之后作为一名工程师,这将是一种尝试

此外,研究最有可能应用设计模式的常见错误/问题;然后(无需重新发明)车轮,您就可以在适用的情况下,使用正确的设计模式提前做出正确的技术决策

作为一名软件工程师,我曾经采用的一种做法是D3(设计驱动开发);任何有效的编码都没有开始(是的,一个字也没有!!),直到完整的或JEDUF(刚刚足够的前期设计)完成;这意味着,在开始“有效”编码之前,您“准确地”知道如何定义您的工作流,并通过适用的模式将它们连接起来,等等。(此外,这种方法将大大减少代码审查时间)

我想说的是,关键在于,从概念精神的角度来说,你已经涵盖了多少模式,以及你有多少技能在正确的时间/地点到来时做出正确的判断来选择正确的模式


干杯,D

看看这个YouTube,他正在制作一个关于设计模式的播放列表。并且有一个非常清楚的解释: