使用设计模式的疑问

2021-04-19 11:17:17 +08:00
 JustinJie
  1. 首先作为一个 crud 开发者, 大量的 if-esle, 重复的工作让我感到是时候提升自己了
  2. 所以最近在看设计模式, 初涉设计模式, 就想到工作中的功能, 每看一个就想能否套用
  3. 现在感觉自己有点陷入设计模式的怪圈, 是否有必要在 crud 的工作中, 考虑设计模式, 是否会过度设计呢 ?

大佬们 指点指点

3128 次点击
所在节点    程序员
17 条回复
4kingRAS
2021-04-19 11:20:47 +08:00
JustinJie
2021-04-19 11:32:25 +08:00
@4kingRAS # 1 感谢 马上看下
huifer
2021-04-19 12:29:39 +08:00
就单表而言可以尝试模板模式,其他的操作可能并没有办法说直接使用某个设计模式。
abersheeran
2021-04-19 13:04:51 +08:00
设计模式就是代码模板……我个人觉得如果你能自己想到好的方式,那么别去看模板。如果你实在想不出来,先看模板,然后在多次练习之后忘掉它们。
zjsxwc
2021-04-19 14:36:15 +08:00
设计模式根本上是 SOLID 原则的实践例子。

个人对设计模式试用体会。

- 为了减少 Bug 出现,就不修改已有代码,或者无法修改三方代码根本接触不到三方源代码、或者没权限修改三方代码等等类似的场景。

- 配合依赖注入容器进行黑魔法。

- 常见的代码共识或者说习俗,比如为了节省内存提高性能的单例,参数很多且能够按需配置参数初始化时的 builder 、遍历树结构的 visitor 、编辑器支持撤销 undo 的命令模式、搞事件系统时用的观察者模式等等。

- 弥补当前编程语言表达能力的不足,比如 C#有了 delegate 就不用啰啰嗦嗦的和 Java 一样写一大堆类来实现观察者模式,比如动态语言 Ruby 、JS 、PHP 都可以运行时动态的给对象加方法,也就不需要和 Java 一样写一大堆类来实现代理模式 /装饰器模式等等。
slert
2021-04-19 15:09:55 +08:00
放心吧 CRUD 是用不到了 如果你有兴趣造轮子的话 或许会用到
3dwelcome
2021-04-19 15:43:05 +08:00
就像用 MD 来描述 BLOG 一样,也有人想用纯文本来描述后台表单之类的界面,并且做得也不错。

但是也不是每个需求都能抽象化,你 if else 要化简成配置文件,其实还挺难的。

我个人建议是,如果造轮子,那就多写一些源代码预处理工具。代码变少后,修改和维护成本就降低了。
BeautifulSoap
2021-04-19 15:59:16 +08:00
crud 你想用设计模式都不太能用到啊
也就工厂,单例这几个常用的,但问题是这几个模式就算你没学过设计模式平时也都在用。。。。。
unco020511
2021-04-19 16:15:41 +08:00
crud 好像没啥能设计的吧
niub
2021-04-20 09:22:05 +08:00
我的理解是:看情况。
我前两年总结过一次工厂模式配合策略模式的优化实践:地址在这里(有兴趣就看看吧): https://www.cnblogs.com/cone/p/12002913.html

项目中对于复杂或多变的需求,巧用设计模式能够解决很多问题,没什么好怀疑的。至于要不要优化,像 if else 这种逻辑判断,如果目前超过 2 次或 3 次,而且可预见的,未来还会有更多的 if else,那就赶紧重构了。
niub
2021-04-20 09:28:15 +08:00
补上一条回答:
我看到楼上有较多人回答 crud 没什么能设计的,这个理解我觉得有问题,我以 Java 为例,灵活定义接口,抽象类,配合设计模式真的会让代码可读性提升不是一点半点,你要是始终面向过程编码,那当我没说。
312ybj
2021-04-20 11:58:26 +08:00
一楼推荐的阿里文字已经很好了,“找到变化,封装变化”。 设计模式针对的就是变化。 楼上有人说 crud 用不到设计模式,curd 也是服务于业务,而业务是多变的。技术是业务需要的一个工具,当掌握每种设计模式的应用场景、特征、优缺点,以及每种设计模式的关联关系,就能很好地满足日常业务的需要。
312ybj
2021-04-20 13:11:54 +08:00
如果是真要学习设计模式的话, 必须要在实践中用到, 你先看看策略模式吧 我之前写过一篇博客 https://juejin.cn/post/6937158601584672804, 后面可以加上责任链之类的。书籍的话,还是要买一本,推荐《设计模式就该这样写》,给你推荐一个网站 https://refactoringguru.cn/design-patterns/catalog 。 祝你早日掌握设计模式的精髓
jones2000
2021-04-20 19:31:06 +08:00
只要能完成任务,上线,就可以了, 至于你怎么实现无所为了。 就跟你打架一样, 你是用华丽的十连斩,还是直接上去狂咬, 能把人干趴下就可以。
hhjswf
2021-04-20 20:49:09 +08:00
@niub 这种意义不是特别大吧,可以写在配置里。。
niub
2021-04-21 08:55:27 +08:00
@hhjswf 写配置?意思是业务逻辑写配置吗?我的理解是,端口 | IP 等这些环境信息写写配置,还可以,业务代码,类似逻辑判断这种写配置有点离谱吧,你目前是这么做的?(不杠,正常交流)
Nauyus
2021-04-22 17:04:39 +08:00
学习设计模式的三个阶段:不会用,滥用,合理使用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/771601

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX