面试官问,工作中用到哪些设计模式 我:单例模式用的比较多,用内部类实现 面试官问:还有呢 我:......(尴尬,没有了)
如果面试官问知道哪些设计模式,那还可以继续聊得下去,但是设计模式在工作的中应用就。。。。 想问下你们工作中都有用到哪些啊,我这边怎么感觉工作中用的不多啊
1
janxin 2020-04-18 11:04:53 +08:00
比较多的单例,工厂,建造者,组合,装饰器,适配器,代理
这些应该基本上经常会用的吧 |
2
twoconk 2020-04-18 11:07:51 +08:00 1
实际工作中可能需要经过多次刻意练习使用,才能回答好这个问题,不然确实是不好回答
|
3
wushigejiajia01 2020-04-18 11:08:29 +08:00 via Android
单例,工厂,策略,代理
|
4
MinQ 2020-04-18 11:56:18 +08:00 via Android
设计模式?啥是设计模式?
|
5
Cmdhelp 2020-04-18 12:03:26 +08:00 1
用好了提高代码结构,用不好 写出四不像,画蛇添足,,,,,,,作为一名老咸鱼,用到的设计模式也挺少
|
6
geekvcn 2020-04-18 12:10:24 +08:00
入门知识真的很便宜,都有明码标价
https://item.jd.com/10079261.html |
7
Junh 2020-04-18 12:10:54 +08:00 via iPhone
我也被问到了,能说出几个,不过问我观察者模式和发布订阅者模式的区别的时候懵了(因为印象中好像没啥区别,后来查资料知道是有些区别的),我面的小公司,前端
|
8
kmyzzy 2020-04-18 13:07:42 +08:00 1
要我我就直接说,这些没卵用
|
9
iFlicker 2020-04-18 13:32:58 +08:00 via Android
用到的多啊。。。单例 工厂 观察者 代理 建造者
|
10
alamaya 2020-04-18 13:38:27 +08:00
不如反问一下面试官,为啥 java 有这么多设计模式
|
11
findmyself 2020-04-18 13:39:23 +08:00 via iPhone
@kmyzzy 可以用于扯淡
|
12
wellsc 2020-04-18 13:41:45 +08:00 via Android
货物崇拜编程
|
14
aguesuka 2020-04-18 14:05:34 +08:00
spring-beans,单例工厂,spring-mvc mvc 过滤器,spring-aop 代理。把用到的框架的设计模式讲出来就行
|
15
xingheng 2020-04-18 14:05:58 +08:00 6
个人认为你只回答了一个“单例用的比较多”确实是减分的,首先“单例”并不是一个很好的常用的设计模式,不应该被大量使用,这个问题在 SO 上有一个很大关注度的讨论,可以去看看。
了解设计模式是有必要的,它跟语言和框架都有关系,好的框架大都是在主流的设计模式上建立起来的,设计模式在通用性和测试的问题上会有比较大的帮助。 至于有哪些设计模式,我觉得你应该搜索“<lang> design patterns”,不同语言下结果会有一些差异。 不用设计模式?单纯的面向过程式或者 OOP 是非常 ugly 的,其实很大程度上我觉得你已经用过一些了,只是不知道会有对应的名字而已。。。 |
16
leafShimple 2020-04-18 15:09:40 +08:00
= = 看了书 知道 我只能吹吹 我才用过 5 6 种,大部分遇见问题都是按照那种抽象一层或者几层的思路来解决问题
|
18
guyeu 2020-04-18 16:56:51 +08:00
|
19
vvvvww 2020-04-18 17:19:39 +08:00
面试官可能更希望考察你对多态的理解和运用,而单例这种创建型的设计模式不太能体现到
|
20
Jrue0011 2020-04-18 17:22:49 +08:00
工厂、策略、代理、门面、建造者、适配器、责任链,写企业应用的话倒是经常有用到。。。
|
21
across 2020-04-18 17:23:37 +08:00
是不是看书学的还是容易区分的。刚接触到的只会告诉你说这个模式代码或 UML 图结构是什么样的。
实践要点是,什么时候用,什么时候不适合用。像上面有人提到,单例有很大的副作用。面试官挖深一点,完全可以问你,为了避免使用单例,还可以选用什么设计方案解决问题···· |
22
nicebird 2020-04-18 17:26:19 +08:00
其实一般来说用过很多的,只是你没有识别出来。
模式不是特意创造的,而是实践过程中总结的。 |
25
xingheng 2020-04-18 23:35:15 +08:00
|
26
across 2020-04-19 00:23:13 +08:00 via iPhone
@zxc1234 第一次初始化时机也不确定,基本整个运行周期都不会销毁。 单例哪里都可以调用,很方便,代价就是多了后代码耦合就降不下来,容易被小白无脑调用。
|
27
cheng6563 2020-04-19 03:48:01 +08:00 via Android
语言不支持的功能就得靠设计模式补
|
28
ciki 2020-04-19 08:11:49 +08:00 1
说设计模式无用的,说明不适合在这个行业混下去,用过设计模式你会发现你的编码能力提升的不是一点两点
|
29
laobingge 2020-04-19 11:07:33 +08:00
像 Spring 这类开发框架非常强大,极大地降低了我们的工作难度,可以像填空一样做应用开发。
但是,这也让我们沦为生产线工人,每天都是 CRUD,知其然,但不知其所以然,最后就变成可以被轻易取代的人。 因此,最好是去剖析我们常用的这些开发框架,那些经典的设计模式、架构模式都被封装在里面了。知道这些不仅有助于我们更好地使用框架,也可以提升我们的能力,有机会还可以自己做一些框架,有利于职业发展进阶。 |
30
hitmanx 2020-04-19 12:11:18 +08:00
如果这个代码不是你一个人写的话,很可能里面已经用了一些设计模式了,只是不熟悉设计模式本身的话你不知道这是个设计模式。
我觉得这种感觉是最好的,你先熟悉了一个模式的用法,再去了解它的理论,很容易有恍然大悟的感觉。而看书的话基本上是倒过来的,这样理解容易流于表面:打开书,马冬梅,合起书,马什么梅 |
31
skypyb 2020-04-19 15:08:09 +08:00
只要是稍微有一点点点点封装的项目, 别的花里胡哨的设计模式不说
起码代理、建造者、门面、装饰器、模板方法、工厂、策略 这几个都是可以轻松找出来的吧? 怎么可能会有没用过 可能只是你看着别人写的代码不知道人家写的什么... |
34
james122333 2020-04-20 09:13:09 +08:00 via Android
会写的好的就是会写的好
不会写的好的就不会写的好 不懂一样可以写的精美 重要的还是语言特性 面向过程有面向过程的写法 搞得文皱皱的不代表代码质量 |