
设计模式
文章平均质量分 67
结合几年工作的经验写下对设计模式的心得体会
郭梧悠
史上最菜程序员
展开
-
设计模式之桥接模式
说实话,在应用中很少使用这个模式,这个模式个人表示有点令人费解。但是我想着既然自己单独弄了个设计模式的专栏,那就要一个不拉的把它们都写完,给本专栏来一个完美的结局。定义将抽象和实现解耦,使得它们可以分别独立的变化。该模式是继承关系的替代方案用处:可以通过聚合代替继承来解决子类爆炸性增长的问题应用例子:小说《知北游》这部十几年前看过的第一部网络小说,不知道读者里面有没有读过这本小说的同道中人,当时真的是被里面的内容给惊艳到了,原来小说还可以这么写吗!现在的网络小说基本上都是套路文,没啥看头了。咳咳原创 2021-08-27 02:24:02 · 235 阅读 · 2 评论 -
设计模式之原型模式
该模式又称之为克隆模式,该模式相对来说很简单。其实这个模用一个词来形容最恰当不过,这个词就是“依葫芦画瓢”。之所以使用克隆模式创建一个对象,可能就是直接创建该对象的代价和成本较大,比如在昂贵的数据库操作之后要创建一个对象。我们可以缓存对象,在下一个请求时返回其克隆,并在需要时更新数据库,从而减少数据库调用。这样,即达到了创建对象的目的,也减少了对数据库的频发操作。何乐而不为。使用过Okhttp这个类的创建还是挺复杂的,而且这个类本身也提供了一个clone方法: class OkhttpClient im原创 2021-04-09 11:01:20 · 229 阅读 · 2 评论 -
设计模式之中介者模式
中介者模式,这个设计模式在博主的工作中,好像几乎没有主动用过。但是其思想理念倒是可以借鉴使用。在这里做个学习笔记,以便于加深自己的理解。中介模式的主要目的和作用,其实就是减少不同类(对象)之间的依赖关系,特别是复杂对象之间的混乱无序的依赖关系,比如A依赖B,B依赖C,C依赖D,D依赖E,D依赖A等等吧,看下图,各个对象之间的直接交互的话,是多么杂乱无章,简直是真是剪不断理还乱。几乎每个对象都需要和其他对象产生关系,也就是需要花精力维护着其他对象的引用。面对这种设计,中介者就起到了快刀斩乱麻的作用,对原创 2021-04-08 14:33:30 · 230 阅读 · 0 评论 -
设计模式之外观模式
参考资料:外观模式Design Patterns - Facade Pattern外观设计模式学习这个模式的时候让我想起了阿基米德的一句话:“给我一个支点,我可以把地球撬动起来”,这句话用在外观设计模式上最恰当不过。因为外观设计模就是一个“以小博大”的“快捷键”模式。因为它的定义就是:“隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口”。这句话可以这么理解:“仅仅通过一个接口,就可以访问隐藏了复杂细节的系统!”. 这不就是以小博大嘛!如果还不了外观模式的意图,想想如下几个问题:1、原创 2021-03-19 11:19:12 · 273 阅读 · 0 评论 -
设计模式之装饰者模式
用搜索引擎搜装饰者模式,可以搜到一大堆的说明。但是为什么我还要写这篇文章呢?因为我感觉我写的跟别人不一样,读了之后相信你会有不同的收获。https://www.runoob.com/design-pattern/decorator-pattern.html...原创 2021-02-20 11:09:10 · 266 阅读 · 0 评论 -
设计模式之迭代器模式
面向对象的三大特性:继承、多态和封装。这三者相辅相成,共同催生出了各种设计模式。迭代器模式就是其中之一。俗话说物以类聚,人以群分。在面向对象的世界中往往相同的对象会相聚成集合。比如一飞机的乘客是一个集合、一地铁的乘客也是一个集合、一公交车的乘客也是一个集合。也就是说乘客们在不同的交通工具下装载下,是一个不同的集合。我们不需要暴漏和知道乘客乘坐的是什么具体交通工具,就可以遍历所有的乘客。这也是迭代器模式的初衷。专业术语表述就是 迭代器模式可以让你在不暴露集合底层表现形式(链表、栈和树)的情况下便利集合中原创 2021-02-13 15:31:21 · 478 阅读 · 2 评论 -
设计模式之组合模式
开篇引言:“从前有座山,山上有个庙,庙里有个和尚在讲故事,讲什么故事呢?将从前有座山,山上有个庙,庙里有个和尚在讲故事,讲什么故事呢?从前。。。。”对于Android开发者来说,下面这幅图应该会很熟悉。在一个APP页面中,经常是一个ViewGroup容器包含了众多子ViewGroup和View,就像老和尚讲故事那样,层层嵌套,组成一个树形结构。在面向对象的世界中,什么样的对象才能组合成树形结构呢?用“本是同根生”这句来表示是最合适不过。我们知道面向对象的一大特征就是继承,一个基类可以派生出若干之类,之原创 2021-02-09 14:05:56 · 353 阅读 · 0 评论 -
设计模式之备忘录模式
俗话说好记性不如烂笔头,这句话用来形容备忘录模式的作用再恰当不过了。备忘录模式的作用就是记住某对象的内部(历史)状态(或历史数据),以备将来使用的时候随之恢复之前的某一状态(或数据)。也就是说备忘录设计模式提供了实现可撤销操作的解决方案.通俗的将就是该模式让你有一种吃了后悔药的感觉。实际上保存一个对象的数据有很多种有段,不能为了模式而模式,这样个人认为有点违背模式的初衷。比如我们可以将对象的数据写到文件里、也可以存到数据库里。手段不同但是都有一个目的,就是保存之后为以后恢复数据使用,黑猫白猫,在备忘录的世原创 2021-01-07 11:10:33 · 423 阅读 · 0 评论 -
设计模式之享元模式
FlyWeight模式,也就是享元模式,其主要目的是“尽可能减少内存的使用量,于相似物件中分享尽可能多的信息”!,在面向对象的世界里,我们主要通过对象来打交道,所以需要创建大量的对象。所以对于面向对象的语言来说,主要是通过减少对象创建的数量来减少内存占用,从而提高了性能。其实核心也就是通过对象的复用技术来避免重复创建符合要求的对象,该模式试图通过检索符合匹配规则的对象,如果有就重用之,没有则创建一个新的对象(同时存储起来,供下次使用)。仔细思考下,事实上这个模式结合创建者模式使用效果更佳,在创建者创建对原创 2021-01-04 15:37:16 · 326 阅读 · 1 评论 -
设计模式之责任链模式
学而时习之,温故而知新。这句话用在设计模式上真是太恰当不过了!博主从上大二的时候就开始阅读设计模式,当时对面向对象的思维理解的不是很深刻。所以一些设计模式弄得一知半解,只知其形而不知其神。工作之余也没有放弃过对设计模式的学习和琢磨,每次阅读相关的设计模式总有不同的心得体会。收货颇多。所以在此建议读者也要时不时翻看下设计模式。从中演化出适合自己的模式出来。可以说设计模式是面向对象思维的集大成者。阅读越有味道。闲言少叙,本篇博文就简单的梳理下博主对责任链模式的理解和体会,如有不当之处欢迎批评指正。正规的责任链原创 2020-12-08 10:31:08 · 565 阅读 · 0 评论 -
设计模式之builder模式
该模式也是常见的一种设计模式,在常用的原创 2020-12-01 10:48:59 · 1055 阅读 · 8 评论 -
设计模式之单例模式浅谈
面向对象的世界里,在一个系统或者应用的生命周期中,总会伴随着对象的大量创建和销毁。有的对象生命周期很短,如昙花一现;有的生命周期却很长,跟电视剧的主角一样可以活到最后一集。具有主角光环的这个对象就是单例对象。 单例模式的目的就是确保在系统或应用的生命周期中,一个类Class只有一个实例对象存在。单例对象的特点之一就是该对象生命周期比较长(当然不排除某个子系统内部的使用完毕后就置null),所以应用的各个子功能或者系统都可以访问使用它(前提是该单例对象是public的)。但是这样会有一个内存泄漏的风险,如果原创 2020-05-20 13:58:55 · 506 阅读 · 0 评论 -
设计模式之代理模式
在Java的动态代理机制中主要涉及一个类Proxy和一个接口InvocationHandler; public Object invoke(Object proxy, Method method, Object[] args)原创 2018-11-24 14:41:54 · 562 阅读 · 1 评论 -
设计模式之工厂模式
工厂模式其实很简单,在这里就简单的说一下自己的心得体会,随时补充和修正自己对工厂模式的认知。question one:工厂是干什么的?当然是生产东西的,在Java的世界或者面向对象编程的世界里,工厂是用来生产对象实例的。当然一个工厂生产的产品具有共性,比如一个工厂专门用来生产手机,不管是红色的手机、黄色的手机、拍照用的手机,老年人用的手机 等等其共性就是手机这个产品。所以可以抽象出Phone这...原创 2018-10-28 21:09:14 · 1037 阅读 · 2 评论 -
设计模式之适配器模式
适配器模式是常用的模式之一,其主要意图就是做接口兼容:使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。比如甲乙两个接口,客户端想让乙接口做出甲接口的行为或者说让乙接口拥有甲接口同样的能力,那么乙接口就必须以某种手段适应甲接口制定的规则。这个手段就是适配器模式体现。 本文就通过一个简单的例子,由不用接口编程到使用接口再到使用适配器模式来解决播放器适配android 自带的播放器的一个小d...原创 2018-05-12 17:26:48 · 2761 阅读 · 0 评论 -
设计模式之命令模式
说实话这个模式挺令人纠结的,但从这个模式的定义上来看,有点让人摸不到什么头脑,而且查看资料以后会发现还是有点稀里糊涂的,说懂了吧也很简单,也不懂吧也有不懂的理由,于是查阅手头的各种书籍,在此写下心得体会,算是加深一下印象。命令模式的定义:将请求封装成一个对象,从而让用户使用不同的请求把客户端参数化,以及支持可撤销和恢复的功能。从定义上来看着实令人一脸懵逼,在这里描述一下博主个人的理解:原创 2018-01-11 10:03:25 · 19748 阅读 · 27 评论 -
设计模式之模版模式
模板模式原创 2018-01-10 09:58:45 · 640 阅读 · 0 评论 -
设计模式之策略模式
状态模式原创 2018-01-08 18:27:05 · 716 阅读 · 1 评论 -
设计模式之状态模式
状态模式的原理其实很简单:核心一个对象的行为取决于它的状态。也就是说如果一个对象的状态发生了变化,那么该对象的行为也要发生相应的改变。虽然上面一句话说出了状态模式的核心所在,在这里还是要简单的分析下,算是加深理解!按照上图以及面向对象的思维,状态模式设计到两种对象: 1、状态持有者对象(StateHolder)或者其他资料上所说的Context,本文为了方便说明也就沿袭Context原创 2018-01-07 17:00:40 · 1038 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式详解原创 2012-02-19 21:50:38 · 1604 阅读 · 0 评论