设计模式
文章平均质量分 91
一届贫农
这个作者很懒,什么都没留下…
展开
-
行为型设计模式之命令模式
命令模式描述官方解释将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。个人理解将软件代码划分为三个方面:① 调用者(入口)、② 命令、③ 执行者。整体流程为 调用者与客户做直接交互,将客户的要求转成相应的命令并且要求命令触发执行者的相关操作,可以理解为是一种自顶向下的分析方法。类结构与基础实现Invoker调用者, 负责持有命令对象并触发命令执行,命令模式的交互入口 ;Client实际与命令模式交互的甲方爸爸,负责提需求原创 2021-07-29 12:09:46 · 303 阅读 · 0 评论 -
结构型设计模式之外观模式
外观模式在开文之前,我想问一下各位,对于吃饭,您觉得是去下馆子方便还是自己在家里弄方便呢?我个人的话就肯定是觉得下馆子方便,当然毛爷爷允许我这么做的话。如果自己在家里做饭呢,我们要准备锅,准备煤气,还要照顾家里人的口味去针对性准备食材和调味品。而下馆子呢,只要我们跟饭店服务员说一声,我想吃的是什么菜,不一会儿菜品便盛到您面前,饭店帮我们省去了一大串的复杂环节,我们所要做的,就只是跟服务员点个菜...原创 2020-01-04 00:23:30 · 199 阅读 · 0 评论 -
结构型设计模式之代理模式
代理模式(Proxy Pattern)在现实世界中,很多带有自己产品的工厂都会选择将自己的产品通过代理商的渠道销售到客户手里。它们为什么要这么做呢?个人看来其中一个原因是工厂如果选择直营,客户原先并不知道这个厂的存在,这时工厂就得从建立卖场到推广品牌一整套流程走下来去宣传自己的产品,这其中的投入是非常巨大的,并且前途还未知。另外一个原因是代理商本身就是在某一片地区拥有着属于自己的强大资源,很多客...原创 2019-12-28 23:57:22 · 329 阅读 · 0 评论 -
结构型设计模式之装饰器模式
装饰器模式逢年过节,或者是遇上心仪的女孩,我们都会以送礼物的方式来让人与人间的关系得到升温。在送礼时,我们首先会先去挑一件合适的礼品,然后再对其进行包装,接着送到我们想送的人手上。那在包装时,有的人会选择一个很好看的礼盒,外面再套上一层礼纸,最后是加一条彩带。也有的人比较简单,直接加个礼盒就完事。当然,也有的人比较环保,直接套个礼纸,再给拧成一个糖果的形状就送人了。但是无论你怎么包装,都不会改变...原创 2019-12-05 12:23:40 · 342 阅读 · 0 评论 -
结构型设计模式之适配器模式
适配器模式在日常生活中,大到空调,小到手机,都需要电力的支持。众所周知,家庭电源的电压是220V,而运送这些电给千家万户使用的高压线的电压一般是在几千伏的范围内。那么,家庭想用电怎么办?这时候就有了变压器,它承担起了电压的转换,解决高压电和家庭电源之间的矛盾。类似这种场景的还有很多,就比如前文说的,我们日常使用的手机,电脑,它们的用电电压一般也就十几伏,而解决手机用电与家庭电压的矛盾的就是电源适...原创 2019-12-02 22:29:25 · 228 阅读 · 0 评论 -
创建型设计模式之原型模式
原型模式工厂方法中生成对象,都是经过类似流水线操作的方式对每一个对象进行构造函数调用,可是每个成品却都是十分相似。当然这里是举例结构较为简单的对象工厂。那么,如果能够直接对对象进行复制而生成相似对象,就能省去将产品放到流水线的工序和其他杂七杂八的辅助工序了(赋默认值、赋初始值…)从而提高创建对象的效率。这就是原型模式的由来。Specify the kinds of objects to cr...原创 2019-12-01 21:47:39 · 258 阅读 · 0 评论 -
创建型设计模式之建造者模式
建造者模式主要用于将产品修饰的这部分内容抽象化,提供给外部一个自由定制的修饰渠道,达到自由切换修饰规则但是不用修改旧代码的效果。带有抽象接口的建造者模式主要涉及的对象有:①引导者(Decorate)、②产品、③抽象建造者接口(Builder)、④定制化的Builder。打个比方,我开着一辆拖拉机去石料场运载建筑用的石料,通过控制石料场的碎石机遥控器,设定石头大小,石头类型等后按启动键,就可...原创 2019-11-25 16:52:42 · 222 阅读 · 0 评论 -
创建型设计模式之工厂模式
工厂模式工厂在现实生活中给我们的印象就是一个生产者的角色,我们需要什么产品,跟它进行相应的描述后,就由它直接进行生产,我们只需等待它生产完,拿成品去使用就行了。工厂模式可分为简单工厂模式、工厂方法模式、抽象工厂模式。下面将对其进行一一介绍。①简单工厂模式简单工厂没有抽象的工厂接口,侧重于能够根据客户端不同的入参而返回相应的对象,并且获取产品的方法一般是静态的。如下图,SimpleClot...原创 2019-11-24 16:01:39 · 239 阅读 · 0 评论 -
面向对象设计原则之迪米特法则
迪米特法则(Law of Demeter,LoD)同称 最少知识原则(Low knowledge Principle,LKP)好,按照习惯,从老外的话开始介绍Each unit should have only limited knowledge about other units: onlyunits “closely” related to the current unit.概念...原创 2019-11-23 14:33:30 · 213 阅读 · 0 评论 -
面向对象设计原则之接口隔离原则
接口隔离原则(Interface Segregation Principle, ISP)Clients should not be forced to depend upon interfaces that they don’tuse.概念1:客户端不应该被迫依赖它们不需要使用的接口。The dependency of one class to another one should ...原创 2019-11-23 00:47:36 · 128 阅读 · 0 评论 -
面向对象设计原则之单一职责原则
单一职责原则(Single Responsibility Principle,SRP)There should never be more than one reason for a class to change.应当有且仅有一个原因能导致类的改变。单一职责原则要求我们在设计类与接口时要尽可能让其简单化。这么做的原因是往往一个承担了多种职责的类会比承担了一种职责的类的修改可能性大许多。...原创 2019-11-22 13:28:36 · 234 阅读 · 0 评论 -
面向对象设计原则之里氏替换原则
里氏替换原则(Liskov Substitution Principle,LSP)If for each object o1 of type S there is an object o2 of type T suchthat for all programs P defined in terms of T,the behavior of P isunchanged when o1 is ...原创 2019-11-21 23:57:56 · 296 阅读 · 0 评论 -
面向对象设计原则之开闭原则
开闭原则(Open Closed Principle,OCP)Software entities like classes,modules and functions should be openfor extension but closed for modifications.指的是一个类,模块,方法需要对扩展打开,对修改关闭。也就是能够保证一个已有的开发成果在维护时,能够不用在修改...原创 2019-11-21 22:23:28 · 159 阅读 · 0 评论 -
初探设计模式
一、为什么需要有设计模式?我们日常居住的房子,整体的结构从纵向看大概就是地基-楼层-封顶,从平面看,一般就是房间-客厅-阳台。那么,在房子打地基时,施工方会考虑,打桩的深浅,柱子的定位与数量等。而再往深层次看,施工方还要考虑柱子所用到的钢筋尺码、数量和浇筑时所用到的水泥类型等,而打桩的深浅还需要相应考虑土质,楼高等各方面的因素。想到这些,只能说头都大了。可是,我们反观我们所在城市的周围,房屋数...原创 2019-11-21 21:02:07 · 217 阅读 · 0 评论 -
创建型设计模式之单例模式
单例模式就是在程序的运行过程中有且只有一个实例。单例类的职责是创建实例,并且保证其唯一。单例模式一般分为懒汉式和饿汉式创建方式,以下是这两种创建方式的具体代码。懒汉式:懒汉式创建方式是线程不安全的,但是它不会带来不必要的垃圾。懒汉式创建方式的优化版:原理很简单,即对singleton增加了volatile修饰,保证了其有序性和可见性,在利用synchronized对Single的类对...原创 2019-11-21 14:27:54 · 174 阅读 · 0 评论