设计模式0-人生若自如初见

我想说

不懂设计模式的程序猿不是好肥宅。设计模式好,设计模式牛,设计模式伴一生。她又近又远,近在你我,远在“情不投意不合”;有深有浅,在朦胧中尽显她的美,被其深深折服(面试),无从言语。何曾想,不身经百战,又怎知其“五脏六腑”。

在此,小白想慢慢的认识她,了解她,然后相识一场到永久…

设计模式概念及意义

记得那是个不知道哪年哪月的什么季节的某一天的校园里,哦,原来有这么个东西,然后,就这么过去了很久,后来,到了现在,本没怎么出现在你的周围,或许也是不关注没认真的研究过,开始慢慢的闯进你的视野里,可能这就是一种被动的认识过程吧,还好,她最终还是来了。

先说她的背景?我记得不多,设计模式最初是被用于建筑领域的设计中,经过其思想的发展及应用,后来才在软件工程界被关注,开始研讨设计模式的话题,这都是大牛要做的事,咱就负责拿过来用就行了,后来就有一拨人,“四人组”,Gof组合合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书
,里面就收录了咱们经常听说的23种设计模式。这是设计模式领域里程碑的事件,然后我们就可以站在巨人的肩膀上了。

Gof组合

Gof组合

设计模式概念,其实这个定义没有固定的,有很多,当然也都是被人认可的,有从模式的作用角度,有从模式的特点角度,都可以来说明。

软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。

设计模式意义,既然这么被人们推崇,她有什么能耐吗?不能看表面的魅力,有那么多的关注者,不管是主动的还是被动的,都应该有她内在的优势。不过,一套经验的总结,无非是为了更好的服务于人类,让人类免于重复性的或是危险性的操作,并且还能提供可靠的,高性能的,节约时间与物质成本的能力,这个当然是从大的方向上说了,针对我们工程师人员来说,尤其是程序猿,设计模式的本质是面向对象设计原则的实际应用,是对类的封装性、继承性
、和多态性以及类的关联关系和组合关系的充分理解,正确使用设计模式具有以下优点:

可以提高程序员的思维能力、编程能力和设计能力。
使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短开发周期。
使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

设计模式基本要素及设计原则

设计模式通常包括几个基本要素,以下简单列出:

  • 模式名称(PatternName)
  • 问题(Problem,该模式的应用环境)
  • 解决方案(Solution,模式的组成成分、相互关系、职责、协作方式等)
  • 效果(Consequence,其优缺点,时间和空间的衡量,及系统各指标的影响)

设计模式六大基本原则

1. 单一职责原则
对一个类而言,应该仅有一个引起它变化的原因,针对的是实现和细节。
2. 开放封闭原则
软件实体对扩展开放,对修改关闭。
3. 依赖倒转原则
高层模块不应依赖底层模块,两者都依赖抽象,抽象不应依赖细节,细节应依赖抽象。
4. 里式替换原则
子类可扩展父类功能,但不能改变父类原有功能。
5. 接口隔离原则
客户端不应该被强迫的依赖那些没用的功能,即将接口拆成更小或更具体的接口,针对的是抽象和程序整体框架的构建。
6. 迪米特原则
如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用,强调类之间的耦合,即解耦的作用。

其实了解完,才发现,这些个规则不就是在我们工作中经常用到的吗,即使没遇到,此时你再看,已经不难理解,当我们创建一个新类,是不是就定义了它具有某个特有的功能,像订单类,用户类,其对应的实现,表示某个独立功能,其实就已经满足单一职责原则了。当有一些公共的方法或接口时,我们是不是会在实体类继承一个公共实体,或有一些接口继承了那些类似简单的增删改查接口,但同时,你是不能修改这些公共的实体和公共的接口的,这是不是就满足了开放封闭原则呢?…

具体内容这里不再赘述,请自行网上详查。以上也只是个人的浅显理解,如有错误,还请指出。

在这里插入图片描述

老家门口水沟

设计模式的分类

根据其功能目的,设计模式可以分为三个类型:创建型结构型行为型

创建型模式

主要用于创建对象,共5种

  • 抽象工厂模式(Abstract Factory)
  • 建造者模式(Builder)
  • 工厂方法模式(Factory Method)
  • 原型模式(Prototype)
  • 单例模式(Singleton)
结构型模式

主要用于处理类和对象的组合,共7种

  • 适配器模式(Adapter)
  • 桥接模式(Bridge)
  • 组合模式(Composite)
  • 装饰模式(Decorator)
  • 外观模式(Facade)
  • 享元模式(Flyweight)
  • 代理模式(Proxy)
行为型模式

主要用于描述对类或对象怎样交互或怎样分配职责,共11种

  • 职责链模式(Chain of Resposibility)
  • 命令模式(Command)
  • 解释器模式(Interpreter)
  • 迭代器模式(Iterator)
  • 中介者模式(Mediator)
  • 备忘录模式(Memento)
  • 观察者模式(Observer)
  • 状态模式(State)
  • 策略模式(Strategy)
  • 模板方法模式(Template Method)
  • 访问者模式(Visitor)

到此,设计模式算是解开了她神秘的面纱,基本的大轮廓也认识的差不多,剩下的就是慢慢的深入了解了,目前得先记住她有哪些类型,哪几种模式,不至于面试中尴尬的说不出来,以后的具体模式详解我也会列出来。

第一次在csdn上写博文,也是第一次这样认真使用Markdown格式,其实这种内容的博文应该很多,但真自己去写了,才发现不容易,感觉不多的东西,搜索,分析,整理,排版,却用了大半天的时间,可能这样的内容大牛应该很快能搞出来,不过自己经历过的,真的学习不少,但小白还需要学习,努力,加油!

参考
http://c.biancheng.net/view/1317.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值