设计模式的总结

学习设计模式主要是利用早上的时间,习惯于早起,之前学习的一些模式都做了一些记录,基于自己理解的记录。还有一些学习过,没有做记录的,今天就对他们做一个总结。方便自己以后的使用。

所谓的设计模式,是用的多了,方便,符合几大原则,有优点就有缺点,有适用场景就有不适用场景,所以模式是固定的,人的思维是不固定,怎么在这些固定的事物上来挖掘出自己不固定的思维方式,可以做到举一反三,举一反十,这才是值得好好思考的事情。

学习是有规律的,是有方法的,不同的事物,不同的人,不同的时间,不同的场合所采用的方式都不相同,我觉得无论学什么,学到精华,学到思想,学以至用,什么是至用就像自己创造的它一样,但很显然我还没有达到,之所以没有达到,是花费的时间不够多,是所需要的基本知识不具备,还有那个很少却起关键作用的天赋,不要觉得天赋不重要,天赋很重要,努力也很重要,不扯其他了,摘录了一些模式特色的记录。从设计模式的分类来看有三大块:创建型,结构型,行为型。

创建型模式

抽象工厂:提供一个创建一系列相关依赖对象的接口,而无需指定它们具体的类。

建造者:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个类的实例化延迟到其子类。

原型:用原型实例指定创建对象的各类,并且通过拷贝这些原型创建新的对象。

单例:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

为什么需要创建型模式?

隐藏了这些类的实例是如何被创建和放在一起,整个系统关于这些对象所知道的是由抽象类所定义的接口。这样,创建型模式在创建了什么,谁创建它,它是怎么被创建的,以及何时创建这些方面提供了很大的灵活性。

什么时候考虑用创建型模式?

当一个系统应该独立于它的产品创建,构成和表示时,应该考虑用创建性模式。

结构型模式

适配器:是将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。想使用一个已经存在的类,而它的接口不符合要求,或者希望创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作。

桥接:是将抽象部分与的它的实现部分分离,使它们都可以独立地变化。

组合:将对象组合成树形结构以表示部分与整体的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。通过对象组合的方式,把两个角色之间的继承关系改为了组合的关系,从而使这两者可以应对各自独立的变化。客户可以一致地使用组合当结构和单个对象。任何用到基本对象的地方都可以使用组合对象。

装饰:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活。以动态,透明的方式对单个对象添加职责

外观:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。如果两个类不必直接通信,那么就不要让这两个类发生直接的相互作用。应该让一个软件中的子系统间的通信和相互依赖关系达到最小,而个体办法就是引入一个外观对象,它为子系统间提供了一个单一而简单的屏障。

享元:为运用共享技术有效地支持大量细粒度的对象。对象使得内存占用过多,而且如果都是大量重复的对象,就是资源的极大浪费。

代理:为其他对象提供一种代理以控制这个对象的访问。

行为模式

观察者:定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化的时候,所有依赖它的对象都得到通知并被自动更新。

模板方法:定义一个操作的算法骨架,而将一些步骤延迟到子类中,模板方法使得之类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

命令:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:可以对象请求排队或记录请求,以及支持可撤销的操作。

状态:允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。

职责链:使多个对象都有机会处理请求,从而避免请求的发送者和接收。者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

解释器:给定一个语言,定义它的文法的一种表示,并定义一个翻译器,这个解释器该表示来解释语言中的句子。

中介者:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

访问者:表示一个作用于某对象结构中各元素的操作。它使你可以在不改变元素的类的前提下定义作用于这些元素的新操作。

策略:定义一系统的算法,把它们一个个封装起来,并且使用它们相互替换,本模式使得算法可独立于使用它的客户而变化。

备忘录:在不破坏封装的前提下,捕猎一个对象内部的状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。

迭代器:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要显露该对象的内部表示。

时间: 2024-10-05 20:11:33

设计模式的总结的相关文章

Java设计模式——创建型模式之单例模式

一.概述 作为第一个出场的设计模式,有必要先介绍一下设计模式(引用自百度百科): 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式使代码编写真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 设计模式概念的介绍,参见:http://blog.jobbole.com/101076/ 其中涉及的设计原则的概念,参见随笔:http://www.c

10大APP界面框架设计模式详解

随着移动互联网的发展,移动app已经成为了每个互联网公司的标配了,那作为产品经理,我们如何设计出更加符合用户体验的app产品呢?今天和大家分享的就是10中最常见的app界面光甲设计模式,一起来看看吧. 1.标签导航 标签导航是十大界面框架设计里最常用的界面框架设计,也是被业界之内公认的一种普遍使用的页面框架设计.那么这种页面框架设计在作业方面对一个用户来说也是最常见的一种页面框架设计,比如说微博.微信.手机百度.支付宝.淘宝,这些我们所谓的超级APP都是运用的标签导航,无一例外.从这个角度也可以

[js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表

所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的 把一个成型的产品组成部件,分成一个个独立的部件,这种方式可以做出很多灵活的产品,这就是组合模式的优势 比如:家用台式机电脑,要求配置比较低, 这个时候只需要主板+电源+内存条+机箱+显示器+外设就可以了,不需要配置独立显卡 鸡腿堡+鸡翅+紫薯

Happy 设计模式之适配器模式(JAVA)

设计模式-适配器模式 适配器模式定义 适配器模式,将一个类的的接口转换成客户或者产品希望的接口形式,就是原本不兼容或者甚至不相干的接口不能一起工作的接口一起工作,完成需求或者客户的需求. 适配器模式的使用场景 1.当你使用一个已经存在的类,而他的接口不符合你的需求. 2.你想要创建一个复用的类,该类可以与其相关的类或者不可见的类协同工作. 适配器角色 Target:目标接口 TargetImpl:目标实现类 Adapter:适配器 Adaptee:被适配者 代码解析: package com.d

设计模式 2/23 工厂模式

工厂模式是最常用的设计模式之一,用好了,代码优雅,可维护性高,对系统设计会上一个台阶 为什么这么说,因为工厂模式可以牵扯出抽象工厂模式,也有大家都会聊到的简单工厂模式 我们要了解一点,23中设计模式中,不包含简单工厂模式,之所以大家会去聊这个,四个字,渐进明细 通过对简单工厂模式的了解,我们引入工厂这个词,不然一个写代码的,天天给他讲工厂,工厂,工厂,西厂,东厂,会晕 同时,通过逐步的深入,从简单工厂,到工厂模式,再到抽象工厂,渐进明细的过程,逐步深入的理解,比较优劣,择优而为我们所用. 试想我

Java设计模式学习笔记,一:单例模式

开始学习Java的设计模式,因为做了很多年C语言,所以语言基础的学习很快,但是面向过程向面向对象的编程思想的转变还是需要耗费很多的代码量的.所有希望通过设计模式的学习,能更深入的学习. 把学习过程中的笔记,记录下来,只记干货. 第一部分:单例模式的内容 单例模式:类只能有一个实例. 类的特点:1.私有构造器:2.内部构造实例对象:3.对外提供获取唯一实例的public方法. 常见的单例模式实现有五种形式: 1.饿汉式. 2.懒汉式. 3.双重检查锁式. 4.静态内部类式. 5.枚举式. 以下分别

设计模式之单列模式

设计模式之单列模式 1,何为单列模式? 即singleton 在某个类采用了单列模式之后  其只能有一个实列对象 ,并且这个实列对象只能有内部自己创建并提供给外部的调用. 2.实现单列模式的方法 分为 :饿汉式 ,懒汉式 下面为饿汉式实现代码: public calss Singleton1{ //将构造函数私有化 防止外部通过new来创建对象 private Singleton1(){ } //创建一个私有静态变量并直接初始化 类加载的时候直接创建对象 private static Singl

设计模式之原型模式(Prototype)

1.初识原型模式 大家都知道连锁机构是现在灰常流行的商业模式,比如咖啡之翼,那么假设咖啡之翼要在长春新建立一个分店,所经营的产品和以前在其他的城市已经存在的店经营的产品差不多,那么面向对象开发的角度怎么解决这个问题呢?难道要重新的实例化一个咖啡之翼的店??这显然不太好吧,咖啡之翼里面经营的产品(假设是属性吧)都需要重新写,这就是在做大量的重复工作啊,这显然是不符合OO开发思想的.遇到这样的情况,并不是重新建立一个类来解决这样的问题,而是通过设计模式中的"原型模式"来解决这种问题.是这种

对设计模式的总结之简单工厂与策略模式

前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓,本文就说说我对本人对简单工厂模式.策略模式的见解. 简单工厂模式与策略模式 简单工厂模式 工作中,常常遇到需要做一个功能(鸭子),这个功能中含有可控个数的子操作功能(鸭子叫,鸭子跑,鸭子飞),而且子功能在不同的情况下处理方式又不相同(成年鸭子/小鸭子叫,成年鸭子/小鸭子跑,成年鸭子/小鸭子飞).我

设计模式——介绍与工厂模式(扁平管理模式VS职业经理人模式)

本文主要对设计模式进行大概解说.特别是对工厂模式进行简明的解析: 一.设计模式的分类 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.訪问者模式.中介者模式.解释器模式. 事实上还有两类:并发型模式和线程池模式. 二.设计模式的六大原则 1.开闭原则(Op