设计模式相关梳理

创建型:

两种工厂模式细分三种:

简单工厂模式(创建一个工厂类,在if-else里面用具体type去判断和创建具体的对象)

工厂方法模式(工厂子类去实现方法,可以理解为在简单工厂模式之上又抽象一层,创建方法做成抽象方法)

抽象工厂模式(抽象工厂,下放到子类去实现,更类似于一个工厂簇)

单例模式(两个饿汉、两个懒汉、一个双重检查、一个静态内部类、一个枚举)

原型模式(克隆羊、property\ 深浅拷贝、克隆和序列化)

建造者模式(抽象出一个指挥者,在指挥者中将不同建造实现类的顺序进行排序或者调用)

结构型:

适配器模式(eg:充电器)

享元模式(eg:jdk中的integer缓存池)

装饰者模式(eg:io中的stream)

代理模式(spring中的aop、静态代理、jdk动态代理、cglib动态代理的区别)

外观模式(天猫精灵这种,隐藏内部调用,使外部调用更简洁,操控整体,一连串的命令)

组合模式(像组织架构这种,或者学院学校这种适合使用,重点是在抽象类中的方法以抛异常的形式进行默认实现)

桥接模式(跟策略模式类似,好像也没啥区别,抽象和实现分离开,也可以说是实体和行为或者属性或者具有的某个特征分离开,区别:一个是结构型,一个是行为型?)

行为型:

模版模式(将一组具有特定步骤的操作抽象成一个抽象类,在抽象类中定义好默认实现,如果子类在某一个步骤有变化就在子类中去重写该步骤,而整体步骤不变化,比如制作豆浆、不同的可能只是加入原料的步骤不同)

访问者模式 (类比绩效、或者某者类型的人看到的是不同的东西,比如成人看的可能是血腥暴力的电影,小孩看的可能是动画片之类的,貌似这种设计模式也可以做权限?)

策略模式(将行为和实体分开,将多个变化的行为抽象成对应的接口,再组合或者聚合到实体中)

迭代器模式(每个集合实现iterator接口,将数据底层的数据结构隐藏,或者说是将实现和访问分离)

观察者模式(发布订阅模式、在订阅主题里面维护一个list)

责任链模式(过滤器、netty中的handler)

解释器模式(用处不多,在解析语言或者正则的使用使用,分为终结型(类比一个表达式中的数字)和连接型,连接型中再创建对应的实现去分别处理对应的连接型字符等(类比+、-、*、%))

状态模式(审批、类的创建、连接的建立等根据具体的状态去定义或者约束可以执行的方法,可以类比组合模式中的在抽象类的方法以抛异常的形式进行默认实现)

备忘录模式 (维护一个list或者队列、栈的方式去保存历史操作,网页的后退)

命令模式 (将命令作为一个媒介,命令对象中会组合具体实现类,执行命令的方法时会去调用该命令所组合的具体实现类的方法去执行,通过命令去解耦invoker和receiver之间的关系,但是命令太多的时候会类爆炸,通过加入一个空命令的类型来避免命令的判断是个好的设计!!!,我认为线程池调用runnable的时候也是使用的这个模式,每一个runnable都作为一个具体的receiver去执行run方法)

中介者模式(类比poseidon的设计,engine类比中介者,其它模块类比参与者)

设计原则:

单一职责

开闭

迪米特(最少知道原则)

里氏替换 (父类出现的地方,子类一定可以出现,即子类可以替换父类)

依赖倒转 (针对接口编程,依赖抽象而不是依赖具体)

接口隔离 (降低耦合度,接口需要是单一职责的)

合成复用原则 (多使用聚合、组合,少使用继承,比如策略模式)

uml类图依赖关系

实现

继承

组合

聚合

关联

依赖

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