各位在工作中设计模式到底用得多吗?

2019-08-15 11:48:22 +08:00
 ZhengZW

除了工厂和单例和代理,有没有用到其他的,工作到现在用最多就工厂和单例,想问问你们用过哪些,应用啥场景?

7234 次点击
所在节点    程序员
34 条回复
yule111222
2019-08-15 11:57:00 +08:00
挺多的,适配器最多,调用远程接口或者接口变换的时候用
长业务流程责任链
构建复杂对象建造者
迭代一个自定义复杂数据结构,迭代器
生产消费者(生产令牌,IP,线程等各种资源提供给消费者使用)
接口聚合,门面模式
工厂和单例和代理就不说了,你也用了
cwjokaka
2019-08-15 12:02:08 +08:00
模板方法,最近写了个服务初始化配置的脚本,把一些固定的流程 /异常处理写在抽象类中,达到代码的最大重用
Caballarii
2019-08-15 12:11:37 +08:00
学过设计模式至少能让你有好好组织拆分代码的意识,动手之前多想想后面的事
taogen
2019-08-15 12:12:13 +08:00
时间紧,先 Ctrl C, V 把功能实现完,打算有时间优化,然后就没有然后了。造成大量代码冗余 🤣
IsaacYoung
2019-08-15 12:14:33 +08:00
我用的最多的是 todo 模式

//TODO: DRY
nekoyaki
2019-08-15 12:26:08 +08:00
也分语言,在某语言里需要长篇累牍,特意起一个高端大气上档次的名词,包装成一个设计模式,可能在另一个语言里一行就完事儿了。
skypyb
2019-08-15 12:44:19 +08:00
多,策略、责任链、工厂、建造者 都有用到
mirrorman
2019-08-15 12:50:55 +08:00
记得前段时间找实习面我的 Leader 让我写 Observer 模式和 Builder 模式,然后对我说一看就没看过源码,一脸懵逼
Raymon111111
2019-08-15 14:48:50 +08:00
模板应该是比较多的
orzorzorzorz
2019-08-15 14:52:05 +08:00
设计模式这玩意从来都是水到渠成的事,强行上虽然解渴,但是不甜
是的,我几乎用不到设计模式
stevenkang
2019-08-15 14:53:33 +08:00
请教大家一下,这算不算一种模式呀?

原来的
```
void typeProfcess(type) {
if (type == 'A1') {
// todo something
} else if (type == 'B2') {
// todo something
} else {
// todo something
}
}
```
改造后
```
static {
typeprocess.put('A1', a1TypeProcessListener)
typeprocess.put('A2', b2TypeProcessListener)
default = defaultTypeProcessListener
}

void typeProfcess(type) {
listener = typeprocess.containsKey(type) ? typeprocess.get(type) : default
listener.exec()
}

```
这样无论以后的 type 多复杂,只需要初始化的时候 put 进去对应的处理就好了。
特别是第三方系统各种报文 type,以前用 if 或者 switch 处理,这样改造了会不会更好?
airfling
2019-08-15 14:56:51 +08:00
主要用到过适配器模式,还是在子类型比较多的时候总体优化了一下才用的
12tall
2019-08-15 15:55:23 +08:00
挺多的,但是刻意学却总也记不住,直到有一天业务需要了,马上就明白了,大概是这个样子
一些重构的骚操作大概也是这个样子
freebird1994
2019-08-15 16:12:21 +08:00
@stevenkang 用策略模式更好,你这个维护的时候还是会修改原有的代码,策略模式只对扩展开放,对修改关闭。
Joyboo
2019-08-15 17:16:20 +08:00
设计模式非常常用
javaWeber
2019-08-15 17:19:12 +08:00
我学了几次。。但是学了又忘了。

重构代码时,发现很多重复代码。但是又不知道用哪个设计模式。

一直处于理论阶段,没有实操过。
yukong
2019-08-15 17:19:39 +08:00
@stevenkang #11 建议使用策略模式使用策略模式 之后如果有新的规则 只需要实现策略接口 重写策略方法 不会对原代码进行修改
Takamine
2019-08-15 18:38:20 +08:00
@stevenkang 虽然改了一下形式,但是感觉耦合度还是差不多的。比如添加一个 A4 的时候,依然还是要在这里做操作。
MeteorCat
2019-08-15 19:03:52 +08:00
单例模式最多
zjsxwc
2019-08-15 19:19:03 +08:00
也就拼 sql 时 builder 模式天天用

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

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

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

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

© 2021 V2EX