设计模式的简单举例

设计模式很多中,但是也非常容易忘记什么情况下使用。
本文初步理解的设计模式,结合现实中的使用,方便形成印象,是初学者的思维理解。

  1. 模板模式
    可以简单理解为,定义一个主方法流程,里面调用一系列方法不实现,由各个子类实现这一系列方法。其中主方法,不能由子类重写

  2. 装饰器模式
    可以认为是一个封装类wrap,内部封装一个核心类,几乎实现和和核心类一样的功能。如在开发中常用的,把一些三方模块再次封装,变成调用自己的类。这样有个好处是,隔离三方api的一些变化,由封装类去统一处理,三方变化对整个app影响小。

  3. 适配器模式
    适配器模式,可以认为是对不同类的对象的再次封装成一个类型,如实现某个接口/协议,这样不同的类,就可以统一当做一个新的类型使用。开发中,有的时候经常可以用来给不同的类增强一些功能。

  4. 享元模式
    可以认为是创造出一个对象,然后在很多地方持有并使用这个对象的一些能力/api。同样这个对象的功能比较基础,通用和强大。如在每个模块中由某个对象对外提供一些统一的api,这个对象可以采用采用享元模式。把对象注入到一个容器中,然后每个模块,想用的时候从该容器中去用搞对象。然后调用他的方法。一些依赖注入的框架就是这样操作的。注意取用的时候转换成想要的类型,这样才能调用相关api。

  5. 外观模式
    外观模式,相当于由一个类统一对外提供一些功能。也常用于一个模块对外提供api接口

  6. 代理模式
    就是一个对象不实现一些功能由代理实现,或者是调用代理做某些事情,或者是从代理获得某些需要的资源

  7. 观察者模式
    可以看做是发布者和订阅者的这个关系,发布者持有很多订阅者。使用方调用发布者的方法,发布者内部遍历所有订阅者,通知他们。

  8. 桥接模式
    通常用于解决多个维度都有变化的问题,把有一个变化的维度抽象,并在另外的地方实现。然后这个类注入这个抽象的依赖。比如分享场景,有不同的渠道,也有不同的内容。在一个类中实现逻辑很繁琐,可以把不同的内容在其他地方实现,和不同的渠道在其他类中实现,桥接类持有他们,然后实现分享。

  9. 中介者
    中介者,可以直接想象成路由模块,是一个通信中枢,避免模块间相互通信。中介者通过出入的参数解析,调用到其他模块的类,进行跳转。通常是被调用方在中介者注册一系列操作,每个操作有一个名称和相关参数。调用方传入操作名称和参数。中介者通过操作名称找到这个方法,传入相关参数并调用。

  10. 状态模式
    比如一个贴片机可以工作在两种模式(状态)下,分为大料状态和小料状态, 贴片机(上下文)的动作就是抓料,然后贴片。通过给上下文切换不同的状态,上下文的动作执行自动执行了状态的一些操作。看起来上下文好像是做了干了两个类的事情。

  11. 备忘录模式
    可以理解成必须要备忘的状态在外面找地方存储一个,然后需要恢复的时候从外面取这个状态,并设置成这个状态。比如修改昵称,等有些地方需要重置等等。

  12. 组合模式
    可以想到就是树的结构,一棵树由节点和叶子组成。通过访问一个根节点,可以访问到所有的子节点和叶子。省市县,这种数据可以使用这种模式

  13. 迭代器模式
    就是使集合和遍历功能分离,遍历使用单独的迭代器进行(do while循环)。迭代器实现hasNext()和next()方法。

  14. 责任链
    就是构建一系列链结构,前一个节点发现不能处理的事务交给后一个节点处理。通常节点需要含有nextHandler属性和hanlder()方法。这个模式非常适合处理一些谁的孩子谁抱走的问题。如处理一个消息可能需要不同的处理类去处理,就可以使用。或者一些授权大小的问题。它的本质是寻找一个响应者能够处理这个消息的响应者。

  15. 命令模式
    针对一大堆操作,可以看作是命令,命令持有一个接收者。创建一堆命令(具体类),每条命令都有接受者执行命令。根据不同的命令,接受者执行不同的操作。调用方就是根据场景调用不同的命令执行,最终由接收者执行。

  16. 访问者模式
    定义一个访问者,里面有不同的方法。被访问者执行一个方法,这个通过传入不同的访问者,最后执行访问者的方法。比如一个游乐场,分不同的票的游玩者,游乐场根据访问者(不同票的入场者),安排参观(参观路线由入场者的票上面的路线图指定)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容