java 设计模式学习解读(一)

来源:互联网 发布:淘宝有官方教程吗 编辑:程序博客网 时间:2024/06/07 15:21

首先,先来讲一个笑话,我要写博客啦。          

(讲正事)罗列一下21种设计模式,按照类别可分为三大类。

1.创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

2.结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

3.行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

考虑到设计模式都是基于六个原则,我们有必要先去了解一下。

六个原则:

开闭原则:对扩展开发,对修改关闭

里氏代换原则:任何基类可以出现的地方,子类一定可以出现

依赖倒换原则:针对对接口编程,依赖于抽象而不依赖于具体

接口隔离原则:使用多个隔离的接口,比使用单个接口要好

狄米特原则(最少知道原则):尽量少的与其他实体之间发生相互作用

合成复用原则:尽量使用合成/聚合的方式,而不是使用继承


  这个时候,可能看完六个原则之后发现所有的原则好像都是一个意思,没错,就是一个意思——“高内聚,低耦合”。

举个例子来理解一下六个原则:(我要开始放大招啦)

中秋快到了,戴林桐要给女朋友准备礼物,他女朋友叫翠花。首先,他买了一月饼礼盒,但一想又觉着可能不够吃,想再加几个散装月饼,可是这月饼又不是他自己包装好的,他不敢拆开把散装月饼放里边,万一拆开装不起来呢?嗯,他很扣。于是他又买了一个包装盒,把月饼礼盒和散装月饼都放了进去,然后他屁颠屁颠给女朋友送了过去。(开闭原则)

到了翠花那儿,戴林桐准备开始做饭,做了一份特别自以为是的西红柿炒鸡蛋。但是这个时候翠花说,我想吃鸡蛋,但是不想吃西红柿。这个时候戴林桐为难了,自个嘀咕:“要是我西红柿和鸡蛋分开炒多好啊!这就是(狄米特原则)吗?”

这时候翠花不开心啦,“算啦,那就吃西红柿鸡蛋面吧!”  戴林桐“好呀好呀”。然后煮好面,把刚做好的西红柿鸡蛋倒了进去。翠花吃了两口,感觉味不对,“要不咱吃炸酱面吧?”    女人真是善变,小六这下哭了,“她要吃面我就给她做面多好,非得做西红柿鸡蛋面一块做!!”。然后戴林桐决定出去吃。(依赖倒换原则)

他们来到了一家面馆,特别不巧的是遇到了某个前任的爸妈,戴林桐虽然特别尴尬,但还是特别有礼貌的去打了招呼,心想:还好不是她女儿。于是也就在隔壁坐了下来。三分钟后,他目瞪口呆地看着前任在隔壁坐了下来。小六给了自己俩嘴巴,默默离开了。里氏代换原则

回去之后,翠花开始抱怨,“你看我给你当女朋友,又得给你打扫卫生,又得陪你玩,还得给你么么哒,你心情不好还得开导你.........”  ,听着翠花在那儿分析,戴林桐越听越觉着有道理,然后出去找了多个女朋友,分别负责打扫卫生,陪他玩,开导他...........,从此翠花只需要负责陪他么么哒就好啦,.重要的是,各个女朋友之间互不认识,所以他们都很开心。(接口隔离原则)

第二天上班,同事问戴林桐:你知道设计模式六个原则吗? 戴林桐特别自信地告他:1.月饼散装礼盒一起包,2.西红柿鸡蛋分开做,

3.要做面不要做西红柿鸡蛋面,4.遇见前任父母赶紧闪,5.女朋友多找几个分工明确 6.。。。。。。。。。。

6呢?造小孩每个女朋友提供一个部位合起来,不要一个人去完成?

开个玩笑,21种设计模式才是重点,这些都只是前言。


1 0
原创粉丝点击