2 u013179958 u013179958 于 2016.02.28 20:12 提问

23种设计模式哪些模式是比较常用的?

我现在就知道
工厂模式:Hibernate的会话工厂就是这个
单例模式:可以节省资源
观察者模式:网上的订阅,就是观察者模式

刚才在网上看23种设计模式,发现数据访问对象模式,-.- 这不就是经常用到的DAO吗...

突然觉得什么设计模式,就是设计的架构而已,dao不就是把访问数据库设计成一个接口吗
访问啥数据都从这一个接口里走,这不就是软件的大架子吗...

9个回答

caozhy
caozhy   Ds   Rxr 2016.02.28 21:28
已采纳

(1)23种设计模式主要是为了解决C++语法抽象度低的缺陷而做的人肉代码展开,大部分对于现代编程语言来说都已经过时。
(2)设计模式的主要设计思想是依赖反转,将可变的代码放到调用者实现,为了定制化,设计模式额外增加了代码,因此设计模式能不用就不用。
(3)讨论什么常用是很无聊的,大米天天吃,阿司匹林头痛的时候吃,难道阿司匹林就没用么?

caozhy
caozhy   Ds   Rxr 2016.02.28 21:36

再强调下,设计模式的作用是用标准的套路(pattern)去实现架构师抽象的设计。千万不能反过来,通过设计模式去反过来指导设计。

好比建筑师告诉你,他的设计意图这里需要加固房屋结构或者隔断,所以让你砌墙。你根据砌墙的套路找来水泥、砖头在这里砌墙。而不是因为你会砌墙,正好手边有水泥、砖头,所以你去砌墙。

“单例模式:可以节省资源”这种说法不知道你在哪里听来的,但是这很恐怖,没有任何一种设计模式可以提高程序的效率,或者简化程序的代码,或者让程序容易维护,等等。别没事找事。

caozhy
caozhy 设计模式不是设计,而是设计的实现。所以设计模式本身没有“提高程序的效率,或者简化程序的代码,或者让程序容易维护”的功效。
接近 2 年之前 回复
caozhy
caozhy 回复qsjh898: "按你这么说来",我没有这么说。
接近 2 年之前 回复
qsjh898
qsjh898 按你这么说来,“没有任何一种设计模式可以提高程序的效率,或者简化程序的代码,或者让程序容易维护”,那所有的设计模式不都是垃圾?根本没有存在的意义?
接近 2 年之前 回复
luochoudan
luochoudan 学习了,不过单例模式某些情况确实可以节省一些内存开销,比如避免一个类被反复创建等。
接近 2 年之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.29 06:58

如果你是个细心的人,就会发现设计模式在Java中无处不在,jdk中就有好多模式的应用。
例如:Java I/0使用的是包装模式,Proxy是动态代理模式,工厂模式,visitor访问模式,awt事件监听器就是观察者模式,Servlet是单例模式……
模式不是刻意使用的,而是看到需求自然想到的,只有适合特定的需求,没有常用这种说法。

luochoudan
luochoudan   Ds   Rxr 2016.02.28 21:31

个人感觉架构要比模式大得多,两个的偏重点似乎也不太一样,不太懂。。

fk002008
fk002008   2016.02.28 21:53

看你干什么用了。如果你使用ssh框架进行开发的话一下模式比较常用

单例模式
工厂模式
代理模式
模板方法模式
策略模式
适配器模式
包装模式
观察者模式
生产者消费者模式

Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.28 23:09

主要看你的工作内容,根据需求进行选择吧!常用的:单例模式:工厂模式、代理模式、适配器模式

chen956
chen956   2016.02.29 17:57

设计模式提供了在平常开发软件是的一些常用方法,但是应该看到这些设计模式的核心思想是给我们这些提供一些基本的软件设计的思路,就像依赖倒置、多态的使用、接口与实现的设计。我觉得应该从这些设计模式中学习掌握他们所体现的原则

dongfeng9ge
dongfeng9ge   Ds   Rxr 2016.03.15 10:24

Android开发最常见的是适配器模式(Adapter)

ultramanleoking
ultramanleoking   2016.02.28 21:08

其实平时见到代码中很多就包含了各种设计模式,只是没有去注意,不知道而已。常用的设计模式除了你上面说的还有很多的,比如代理模式,适配器模式,建造者模式,策略模式,责任链模式等。

Csdn user default icon
上传中...
上传图片
插入图片