首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OOPS:为什么设计-模式和为什么不编码-模式

OOPS:为什么设计-模式和为什么不编码-模式
EN

Stack Overflow用户
提问于 2021-11-30 07:47:52
回答 1查看 124关注 0票数 0

谢谢您的答复。

我对C/C++辅导感兴趣。我的教学方法是先解释新概念/新科技的必要性,或解释现行制度的缺点。通过这种方式,我试图到达设计模式的必要性和命名理由。

现在来谈谈我的实际问题。我知道几乎所有的设计模式,至少在理论上,并使用了一些实际。在使用上没有问题。但是,当我教书的时候,我常常对自己提出一些问题,这是我对学生们的期望。

  1. Can’t我在没有设计模式的情况下生存下来?--似乎只是一个问题的逻辑/算法。既然它解决了一个常见的/重复的问题,那么它是否只是为了避免重新发明同一个轮子呢?

  1. Called作为设计模式,但它看起来像一个编码模式?-如果它只是代码逻辑,为什么它被称为设计模式。作为一个程序员,我还可以分析应该使用哪个循环语句?即。为了.同时.?我能把它命名为“循环设计模式”吗?如果有人回答为“嘿,这只是一个处理代码语言的构建块(条件/循环/数据类型/存储类)的问题。如果是的话,我可以对一个单独的人提出同样的问题--”嘿,这只是一个处理静态关键字的问题“.But静态关键字的一部分。如果是这样的话,我可以对工厂、生成器、桥梁、访问者、策略提出同样的问题--嘿,它们只是处理动态绑定的问题,使用原始的、不安全的C中的”指针“和C++中的安全虚拟机制实现。”这就是“您同意吗?”

他们引入

  1. Are是为了实现坚实的原则?,我在5年后开始使用设计模式,了解了坚实的原则。即。理论上说我并不完美。但是,在我阅读了这些原则之后,我可以理解每一种设计模式至少满足这五条规则中的一条。因此,我可以得出结论,固体是设计层的约束,而设计模式是代码级的解决方案。因此,它应该被称为“编码模式”

  1. So设计和coding?

的分界线是什么?

  1. Is它只是一个简单易用的工具?(即。可重用性:生产力:可维护性:可扩展性:可伸缩性,等等)。

  1. 还是你想简单地把我折中为“嘿,有人这么命名它,离开它”

我有自己的答案,不同的观点,请您纠正?

答案1:在开发人员之前,设计人员(低级/高级)也会麻烦于实体/对象和对象之间的通信。对他来说,语言是UML,他有类、序列、状态图等。所以我们可以理解,这些模式仅由设计者作为UML图发布,但是后来不同的开发人员给出了代码解决方案,因此被命名为“设计”模式。

答案2:在C中,“类型”和“逻辑”保持分离(即使对于使用struct关键字的用户定义的数据类型也是如此)。但在C++中,一些逻辑被合并为成员函数-例如。数组类型的边界检查。因此,在用C编写独立函数时,只需担心算法/逻辑,就可以将其命名为“重复问题”的“编码模式”。但是在OO范式(C++)中,在定义“类型”本身时,您必须考虑的不仅仅是存储空间。即。数据成员,您不能简单地将其称为逻辑,因为您几乎没有定义类型,而是通过考虑约束来设计“类型”,比如: 1.仅用于单例的实例;2.支持在状态模式中提供新的状态,等等。

如果你觉得,我把自己搞糊涂了,或者对此有太多的分析,请允许我。我想在向学生解释的时候讲得更清楚,因为他们不应该感到困惑。谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-11-30 16:15:17

  1. 当然,没有模式你就能生存下来。当您第一次学习编写代码时,您所知道的只是语法,并且仍然可以运行。但是,在某个时候,您会想要向团队中的其他开发人员传达您所写的内容。如果有一个术语来解释高层次的实现,而不需要描述每一行或每一个函数,那不是很好吗?

  1. 设计模式的概念来源于体系结构,它有自己的设计模式。在软件中,设计模式与语言无关。它们与语法无关。如果您认为Singleton是关于static的,那么您对模式的理解是不完整的。语言语法层次上的模式等价称为成语。习语是实现模式。它们同样重要,但不能跨语言传输。

  1. GoF设计模式不可能专门用于实现坚实的原则,因为SOLID是在几年后发布的;然而,SOLID所基于的原则(耦合、内聚力、关注点的分离等等)更古老,当然也为GoF的作者所熟知。好的软件往往满足软件的原则。好的模式也会起同样的作用,这一点也不足为奇。

  1. 这个问题太大了,太模糊了。整本书都是关于软件设计的。

  1. 不都是一个简单易用的软件吗?

  1. 呼吁GoF的权威无疑是一个常见的重复;但我建议您的团队的权威。如果您的团队实践设计模式,那么您的应用程序将具有一个易于交流的一致结构。如果您的团队对设计模式不感兴趣,那么它们将很少从您单独实现它们中获益。我相信设计模式比其他任何东西更多的是关于编程的社会方面的。

A1。你说的“设计师”听起来像个建筑师。体系结构比(GoF)设计模式更抽象。它关注跨不同系统的多个应用程序的集成。

A2。您正在描述过程编程和面向对象编程之间的区别。OOP引起了模式运动:它使他们出名;但是every paradigm has its own patterns。C是一种过程语言,而C++支持OOP。如果您打算教授不同的范例,那么您指导这两种语言的方法将是完全不同的。

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

https://stackoverflow.com/questions/70165889

复制
相关文章

相似问题

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