关于面试问设计模式

2020-04-18 10:58:47 +08:00
 zxc1234

面试官问,工作中用到哪些设计模式 我:单例模式用的比较多,用内部类实现 面试官问:还有呢 我:......(尴尬,没有了)

如果面试官问知道哪些设计模式,那还可以继续聊得下去,但是设计模式在工作的中应用就。。。。 想问下你们工作中都有用到哪些啊,我这边怎么感觉工作中用的不多啊

5573 次点击
所在节点    程序员
35 条回复
across
2020-04-18 17:23:37 +08:00
是不是看书学的还是容易区分的。刚接触到的只会告诉你说这个模式代码或 UML 图结构是什么样的。
实践要点是,什么时候用,什么时候不适合用。像上面有人提到,单例有很大的副作用。面试官挖深一点,完全可以问你,为了避免使用单例,还可以选用什么设计方案解决问题····
nicebird
2020-04-18 17:26:19 +08:00
其实一般来说用过很多的,只是你没有识别出来。

模式不是特意创造的,而是实践过程中总结的。
zxc1234
2020-04-18 23:04:55 +08:00
@xingheng 单例有什么缺点呢?怎么解决?还有,请问 SO 是什么?
zxc1234
2020-04-18 23:06:38 +08:00
@across 为什么要避免使用单例呢?不用单例,用什么呢?
xingheng
2020-04-18 23:35:15 +08:00
across
2020-04-19 00:23:13 +08:00
@zxc1234 第一次初始化时机也不确定,基本整个运行周期都不会销毁。 单例哪里都可以调用,很方便,代价就是多了后代码耦合就降不下来,容易被小白无脑调用。
cheng6563
2020-04-19 03:48:01 +08:00
语言不支持的功能就得靠设计模式补
ciki
2020-04-19 08:11:49 +08:00
说设计模式无用的,说明不适合在这个行业混下去,用过设计模式你会发现你的编码能力提升的不是一点两点
laobingge
2020-04-19 11:07:33 +08:00
像 Spring 这类开发框架非常强大,极大地降低了我们的工作难度,可以像填空一样做应用开发。

但是,这也让我们沦为生产线工人,每天都是 CRUD,知其然,但不知其所以然,最后就变成可以被轻易取代的人。

因此,最好是去剖析我们常用的这些开发框架,那些经典的设计模式、架构模式都被封装在里面了。知道这些不仅有助于我们更好地使用框架,也可以提升我们的能力,有机会还可以自己做一些框架,有利于职业发展进阶。
hitmanx
2020-04-19 12:11:18 +08:00
如果这个代码不是你一个人写的话,很可能里面已经用了一些设计模式了,只是不熟悉设计模式本身的话你不知道这是个设计模式。

我觉得这种感觉是最好的,你先熟悉了一个模式的用法,再去了解它的理论,很容易有恍然大悟的感觉。而看书的话基本上是倒过来的,这样理解容易流于表面:打开书,马冬梅,合起书,马什么梅
skypyb
2020-04-19 15:08:09 +08:00
只要是稍微有一点点点点封装的项目, 别的花里胡哨的设计模式不说
起码代理、建造者、门面、装饰器、模板方法、工厂、策略 这几个都是可以轻松找出来的吧?
怎么可能会有没用过
可能只是你看着别人写的代码不知道人家写的什么...
zxc1234
2020-04-19 21:46:33 +08:00
@vvvvww 如果是考查多态,是希望我说哪些设计模式呢
zxc1234
2020-04-19 21:59:36 +08:00
@iFlicker 项目中什么地方用到代理呢
james122333
2020-04-20 09:13:09 +08:00
会写的好的就是会写的好
不会写的好的就不会写的好
不懂一样可以写的精美
重要的还是语言特性
面向过程有面向过程的写法
搞得文皱皱的不代表代码质量
iFlicker
2020-04-20 19:04:43 +08:00
@zxc1234 之前是写 SDK 的 ,负责的策略代理接口用过,还有个可参考的就是 Android Framework 中 ams

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

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

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

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

© 2021 V2EX