欢迎来到设计模式的世界
相信许多朋友都听说过设计模式的大名。对某些人而言,它是编程高人创造出的绝世武功;对某些人而言,它是夸大其词的高山流水;对某些人而言,它又是可望而不可即的玄学义理。
今天,我想告诉大家,所谓设计模式,不是多么玄乎的东西。它是一种思想,是一种方法,就像我们生活中每天都会将事情做得尽量有条不紊一样,设计模式就是为了使我们的代码有条不紊。所以,设计模式源于生活,植于代码,它让程序员的世界变得更有秩序,也更加优雅。
如下给出设计模式的正规定义:
模式是在某种情境 下,针对某种问题 的解决方案:
- 情境就是应用某个模式的情况,这应该是会不断出现的情况。
- 问题就是你希望在某种情境下达到的目标,也可以是某种情境下的约束。
- 解决方案就是你追求的一个通用设计,用来解决约束、达成目标。
设计模式诗
专辑《长恨歌》——他的告白
繁华【装饰】着喧嚣
忧愁【适配】着烦恼
夜深深,有一个孤独的【代理】人
默默【观察】世界的纷扰破旧的【工厂】留下了两张老默片
【外观】已是风吹雨打后的残痕斑斑
刹那间时光溯流,记忆荡起涟漪
彼时青葱日子,他是简单的【单件】
心中却【复合】着遥遥的思念
用什么【策略】才可以和她亲密无间
陷入失魂的状态
像稻草人一样可怜的【模板】青春【迭代】远去,终究只剩下回忆
喃喃自语回忆【组合】不出你
那些【命令】的口吻,仍是温柔耳语
往事随风飘,一切已不再清晰目光如炬,越过星河到过去
告白藏匿,长叹恨遥遥无期
以上列出了常见的13种设计模式,大家可以体会一下。
接下来献上的是真正标准权威的设计模式定义,取自HeadFirstDesignPattern书籍。
设计模式全览
设计模式 | 定义 |
---|---|
策略模式 | 该模式定义了算法族,分别封装起来,让他们之间可以相互代替,使算法的变化独立于使用算法的客户。 |
观察者模式 | 该模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都能收到通知并自动更新。 |
装饰模式 | 该模式动态地将责任附加到对象上。若要扩展功能,它提供了比继承更有弹性的替代方案。 |
工厂方法模式 | 该模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,它使实例化推迟到了子类。 |
抽象工厂模式 | 该模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 |
单件模式 | 该模式确保一个类只有一个实例,并提供一个全局访问点。 |
命令模式 | 该模式将“请求”封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。它也支持可撤销的操作。 |
适配器模式 | 该模式将一个类的接口,转换成客户期望的另一个接口。它让原本接口不兼容的类可以合作无间。 |
外观模式 | 该模式提供了一个统一的接口,用来访问子系统中的一群接口。它定义了一个高层接口,让子系统更容易被访问。 |
模板方法模式 | 该模式在一个方法中定义算法的骨架,而将一些步骤延迟到子类中。它使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 |
迭代器模式 | 该模式提供一种方法顺序访问聚合对象中的各个元素,而又不暴露其内部的表示。 |
组合模式 | 该模式允许将对象组合成树形结构来表现“整体/部分”的层次结构。它能让客户以一致的方式处理个别对象以及组合对象。 |
状态模式 | 该模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 |
代理模式 | 该模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。 |
复合模式 | 该模式结合两个或两个以上的模式,组成一个解决方案,解决一再发生的一致性问题。 |
未来的路
(有生之年系列)
之后有时间的话会逐个分析每一个设计模式及应用场景。
今天就只把定义放在这里啦~
欢迎阅读和评论哈~