23种设计模式
23种设计模式
GTC_GZ
这个作者很懒,什么都没留下…
展开
-
12. 设计模式 原型模式(Prototype Pattern) 以获取多种形状为例
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。介绍意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。主要解决:在运行期建立和原创 2020-09-23 15:59:15 · 151 阅读 · 0 评论 -
11. 设计模式 建造者模式(Builder Pattern) 以造汽车买汽车为例
建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。抽象建造者:引入抽象建造者的目的,是为了将建造的具体过程交与它的子类来实现。这样更容易扩展。一般至少会有两个抽象方法,一个用来建造产品,一个是用来原创 2020-09-23 15:43:58 · 685 阅读 · 0 评论 -
10. 设计模式 状态模式(State Pattern) 以自动售货机为例
状态模式给了我眼前一亮的感觉啊,值得学习~先看定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。定义又开始模糊了,理一下,当对象的内部状态改变时,它的行为跟随状态的改变而改变了,看起来好像重新初始化了一个类似的。下面使用个例子来说明状态模式的用法,现在有个自动售货机的代码需要我们来写,状态图如下:分析一个这个状态图:a、包含4个状态(我们使用4个int型常量来表示)b、包含3个暴露在外的方法(投币、退币、转动手柄)c、我们需要处理每个状态下,用户都可以触发这三个动作。下面原创 2020-09-23 14:28:57 · 245 阅读 · 0 评论 -
9. 设计模式 模版方法模式 展现程序员的一天
老套路,先看下定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。简单看下定义,模版方法定义了一个算法的步骤,并且允许子类为一个或多个步骤提供实现。定义还算清晰,下面来个例子展示下本公司的上班情况(纯属娱乐,如有雷同,请对号入座)。简单描述一下:本公司有程序猿、测试、HR、项目经理等人,下面使用模版方法模式,记录下所有人员的上班情况:首先来个超类,超类中定义了一个workOneDay方法,设置为作为算法的骨架:package com.原创 2020-09-23 09:05:47 · 116 阅读 · 0 评论 -
8. 设计模式 外观模式 一键电影模式
这个模式比较简单,嘿嘿,简单写一下。老样子,先看 外观模式(Facade Pattern)定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用。其实就是为了方便客户的使用,把一群操作,封装成一个方法。举个例子:我比较喜欢看电影,于是买了投影仪、电脑、音响、设计了房间的灯光、买了爆米花机,然后我想看电影的时候,我需要:1、打开爆米花机2、制作爆米花3、将灯光调暗4、打开投影仪5、放下投影仪投影区6、打开电脑7、打开播放器8、将播放器音调设为环绕原创 2020-09-23 08:57:26 · 362 阅读 · 0 评论 -
7. 设计模式 装饰者模式 带你重回传奇世界
今天继续设计模式之旅,给大家带来装饰者模式,国际惯例,先看定义。装饰者模式:若要扩展功能,装饰者提供了比集成更有弹性的替代方案,动态地将责任附加到对象上。先简单描述下装饰者模式发挥作用的地方,当我们设计好了一个类,我们需要给这个类添加一些辅助的功能,并且不希望改变这个类的代码,这时候就是装饰者模式大展雄威的时候了。这里还体现了一个原则:类应该对扩展开放,对修改关闭。下面进入正题,今天在那看电影,忽然想起年轻时在游戏场上的血雨腥风啊,哈哈,下面以游戏为背景介绍装饰者模式。玩过游戏的兄弟应该都知道,游戏里原创 2020-09-23 08:53:28 · 2335 阅读 · 3 评论 -
6. 设计模式 命令模式 之 管理智能家电
继续设计模式哈,今天带来命令模式,二话不说,先看定义:定义:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。这尼玛定义,看得人蛋疼,看不明白要淡定,我稍微简化一下:将请求封装成对象,将动作请求者和动作执行者解耦。好了,直接用例子来说明。需求:最近智能家电很火热啊,未来尼玛估计冰箱都会用支付宝自动买东西了,,,,假设现在有电视、电脑、电灯等家电,现在需要你做个遥控器控制所有家电的开关,要求做到每个按钮对应的功能供用户个性化,对于新买入家电要有非常强的扩原创 2020-09-22 22:33:27 · 238 阅读 · 0 评论 -
5. 设计模式 适配器模式 以手机充电器为例
坚持,坚持~继续设计模式,尼玛停了段时间就不想写了,一定要坚持~今天带来适配器模式老样子,定义:将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。这个定义还好,说适配器的功能就是把一个接口转成另一个接口。发现两张图片可以很好的解释适配器模式:这两张图很好的说明了适配器的作用哈,话说我当年买了个欧版的HTC G17 ,还配了个插头转化器,这个插头转化器就是起得适配器的作用。下来来点代码解释哈,如题目,手机充电器一般都是5V左右吧,咱天朝的家用交流电压220V,所以手原创 2020-09-22 22:27:20 · 318 阅读 · 0 评论 -
4. 策略模式 以角色游戏为背景
今天不想写代码,给大家带来一篇设计模式的文章,帮助大家可以把系统组织成容易了解、容易维护、具有弹性的架构。先来看看策略模式的定义:策略模式(Strategy Pattern):定义了算法族,分别封装起来,让它们之间可相互替换,此模式让算法的变化独立于使用算法的客户。好了,对于定义,肯定不是一眼就能看明白的,不然这篇文章就收尾了,对于定于大家简单扫一眼,知道个大概,然后继续读下面的文章,读完以后再来回味,效果嘎嘣脆。大家应该都玩过武侠角色游戏,下面我就以角色游戏为背景,为大家介绍:假设公司需要做一款武侠原创 2020-09-22 22:14:54 · 127 阅读 · 0 评论 -
3. 单例设计模式
相信大家都知道设计模式,听的最多的也应该是单例设计模式,这种模式也是在开发中用的最多的设计模式,可能有很多人会写几种设计模式,那么你是否知道什么是设计模式?为什么会有单例设计模式即它的作用是什么?单例模式有哪些写法?对于这样的问题,可能有部分童鞋并不能很好的回答,没关系今天就和大家一起来详细的学习下单例设计模式,相信通过学习本篇你将对单例设计模式有个详细的理解。如有谬误欢迎批评指正,如有疑问欢迎留言。通过本篇博客你将学到以下内容①什么是设计模式②为什么会有单例设计模式即它的用处,以及它解决了什么问题原创 2020-09-22 22:05:31 · 134 阅读 · 1 评论 -
2. 工厂模式 从卖肉夹馍说起
今天继续设计模式之旅,给大家带来工厂模式,简单列一下这个模式的家族:1、静态工厂模式2、简单工厂模式3、工厂方法模式4、抽象工厂模式是不是觉得,我勒个去,这工厂还能列出这么多分类,哈哈,下面开始各个击破。1、静态工厂模式这个最常见了,项目中的辅助类,TextUtil.isEmpty等,类+静态方法。下面开始详细介绍:略。2、简单工厂模式下面开始谈谈卖肉夹馍,最近程序员卖肉夹馍很火,啥时候大牛们都去卖了,我等就崛起了,哈哈。首先你得有个店:RoujiaMoStorepackage com原创 2020-09-22 21:40:54 · 286 阅读 · 0 评论 -
1 观察者模式 以微信公众服务为例
继续设计模式的文章,今天给大家带来观察者模式。先来看看观察者模式的定义:定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有的依赖者都会收到通知并自动更新。好了,对于定义的理解总是需要实例来解析的,如今的微信服务号相当火啊,下面就以微信服务号为背景,给大家介绍观察者模式。看一张图:其中每个使用者都有上图中的3条线,为了使图片清晰省略了。如上图所示,服务号就是我们的主题,使用者就是观察者。现在我们明确下功能:1、服务号就是主题,业务就是推送消息2、观察者只需要订阅主题,只要有新原创 2020-09-22 21:10:10 · 355 阅读 · 0 评论