怎么理解、学习设计模式

很多编程初学者会很奇怪设计模式是什么,而且搞不懂为什么要学设计模式,有什么用,这篇文章用例子来简单解答,使疑问者快速对设计模式有个大概的了解。

What is 设计模式:

--------【这部分为理论知识】------------

模式:

模式可以理解为做一件事情的套路。

设计模式:

通常说的设计模式是指GoF在《设计模式:可服用面向对象软件的基础》一书中提到的23种设计模式。

当然现在已经远远不止这23种设计模式,还有很多很多,并不断有新的模式诞生,对于设计模式必须满足大三律:一个解决方案必须在三个完全不同类型或者不同领域的系统中得以应用才有资格成为位候选模式。

四个基本要素:

  1. 模式名称(助记名)
  2. 问题(何时用)
  3. 解决方案(组成部分怎么设计)
  4. 效果(这样设计的好坏)

----------------------------------------

Why we use 设计模式:

设计模式的作用

这部分用太理论的话说理解起来不好理解,下面举几个形象的例子:

【1】===========================

A:您好,KFC请点餐。

B:我要一份涂了沙拉酱的,中间夹上鸡大腿肉,放上辣椒粉,夹上两片生菜,再加上一片培根的双层面包片,鸡肉要先炸过,皮一定要脆。

A:What the f..k?

使用设计模式之后- - - - - - - - - - - - - - - - - - - - - - - - 

A:您好,KFC请点餐。

B:我要一份香辣鸡腿堡。

A:好的,请稍等。

这里的汉堡类型可以说是一个设计模式(食物类型)。

【2】===========================

A:您好,请问您想吃哪种类型的火锅?

B:我要那种一边是加辣底料的汤,一边是加清汤,两边一样大,中间有东西隔开,圆圆的,可以加热的那种。

A:Em...

使用设计模式之后- - - - - - - - - - - - - - - - - - - - - - - - 

A:您好,请问您想吃哪种类型的火锅?

B:鸳鸯锅。

A:好的。

这里的鸳鸯锅可以说是一个设计模式(火锅模式)。

【3】===========================

A:你喜欢什么样子的女生。

B:我喜欢的女生的样子是长发及腰,大眼睛,小鼻子高鼻梁,弯月眉毛,瓜子脸,樱桃嘴巴,瘦瘦高高的。

使用设计模式之后- - - - - - - - - - - - - - - - - - - - - - - - 

A:你喜欢什么样子的女生。

B:我喜欢美女。

这里的美女可以说是一个设计模式。

===========================

总结:

(1)上面例子不很恰当但较形象,如果交流两方AB有"共享词汇",我们可以直接说这些共享词汇(设计模式的名称),而不必描述组成部分的具体细节,大大节省了交流成本,也比直接描述更清晰的表达自己的意思。

(2)设计模式可以使人们更方便的复用成功的设计模式和结构,比如一份汉堡里夹哪些东西,作料怎么放等等。

(3)设计模式可以使人们深入理解面向对象设计思想,提高软件的开发效率节约成本。比如,如果一份鸡腿堡需要2片生菜,那做10个鸡腿堡时候,我准备20片生菜叶,每两片分成一份,做的时候直接取就好了。

How to learn and use 设计模式:

  1. 需求驱动
  2. 分析成功的模式的应用场景
  3. 充分了解所使用的开发平台
  4. 编程中领悟
  5. 避免设计过度

通俗解释一下:

1、需求驱动:不要因为设计模式而用,设计模式是针对软件开发的,软件开发是针对需求的,不要生搬硬套使设计变得复杂难以调试、维护,而是根据需求来确定【任何技术都是如此,比如我做了一个十几个人访问的网站,没必要整个分布式、整个缓存、数据库分库分表,这些只能浪费时间,提高开发维护成本,当然在学习阶段还是可以尝试的】。

2、分析成功的模式的应用场景:比如学习了单例模式,思考一下它在哪些场景会被用到。

3、充分了解所使用的开发平台:虽然设计模式理论上是适用于任何语言的,但每种语言和平台有自身的特点,需要结合相对应的平台来使用,比如J2EE有反射和依赖注入。

4、编程中领悟:学了一种设计模式之后,不要只停留在理论,自己动手实现以下,能更好的理解类之间的耦合关系,是继承还是包含还是其他关系。

5、避免设计过度:一定要牢记简洁原则(KISS_keep it simple, stupid),设计模式是为了简单,而不是为了把简单问题复杂化,必须把握需求的变化程度,区分需求的稳定部分和可变部分,过度设计和设计不足都对项目不利!

GoF的23种设计模式:

设计模式、框架、架构 区别?

设计模式:解决特定问题的,范畴小,针对性强。

框架:如果说设计模式是解决特定问题,那么框架解决问题的领域就大多了,比如SSM框架:我设计一个在线考试系统可以用它,进销存系统可以用它, 购物网站可以用它,在线音乐也可以用它。一个框架里面可能会用到多种设计模式。框架比架构更具体,更偏技术。

架构:一个架构可以包含多种框架,比如 一个购物网站的架构 :数据层使用xx框架、业务逻辑层使用xx框架、表现层使用xx框架。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值