Design Patterns
给我一个自信的表情
每天一点点
展开
-
Java多线程设计模式概要
多线程设计模式 设计模式,来自建筑学,通过观察大量的建筑设计,总结出来的一套最常用的设计方法,迁移到计算机领域,就是如何很好的设计类与类之间的关系和交互,实现低耦合,高内聚的设计。 ⑴single Thread Execution 模式: Synchronized同步方法,当多线程访问临界资源的时候,为了防止并发导致的数据不一致问题,所以使用Synchronized同步,让同一时刻只有一个线...原创 2018-11-03 10:42:02 · 179 阅读 · 0 评论 -
设计模式笔记之十命令模式
命令模式 为什么引用命令模式 当需求变动比较频繁,如果没有一个具体的负责人的话,那我们每次都必须将项目相关人员带上,去和客户讨论需求,这样做的结果是人力成本过高,而且过去麻烦,如果可以有个负责人,负责只需接受客户的命令需求,就立刻通知相关负责部门进行执行就可以方便很多了,这就是为什么引入命令模式。 命令模式是什么 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,对请求排队或者...原创 2018-11-08 15:50:06 · 72 阅读 · 0 评论 -
设计模式笔记之七适配器模式
适配器模式 为什么引入适配器模式 在生活中,我们使用的电器中,有的电压小于标准电压,这个时候,如果我们想使用该电器,我们通常的做法是使用一个变压器,将变压降低到该电器能够使用的电压,我们使用变压器将接口进行转化,将产生过大变压的接口转化为该电器可以使用的电压接口,这个变压器就是适配器。 适配器模式是什么 将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,别名为包装器。...原创 2018-11-05 14:57:00 · 141 阅读 · 0 评论 -
设计模式笔记之六代理模式
代理模式 为什么需要代理模式 当我们需要访问外部资源的时候,由于我们自己网络限制,我们不能够访问到外部资源,但是如果有一个主机,可以我们访问外部的资源,然后将外部资源存放到存储设备上,然后我们可以访问这个存储设备来获取我们想要的资源。在这里这个主机扮演者代理的角色,帮助我们获取我们需要的资源,因此,我们需要代理模式来帮助我们实现我们自身不能实现的需求。 什么是代理模式 给某一个对象提供一个...原创 2018-11-05 13:40:36 · 117 阅读 · 0 评论 -
设计模式笔记之五建造者模式
建造者模式 为什么需要建造者模式 当我们要创建多个具体实例时,如果需要为每个场景创建一个具体的类,这样实现起来比较麻烦,所以我们需要一个角色,帮助我们针对不同的场景创建不同的实例,当一个实例的创建可以由不同步骤组成,不同的步骤创建不同的实例,固定的创建单个具体实例虽然可以,但是当实例的种类过多,或者需求变动过大,则会产生大量重复的代码,这个时候,需要一个角色扮演实例的创建指挥者,即明确不同的需...原创 2018-11-05 11:37:04 · 201 阅读 · 0 评论 -
设计模式笔记之四原型模式
原型模式 为什么引入原型模式? 当我们需要创建某个对象的时候,我们使用new关键字,但是当我们需要创建两个相同的对象,接着new,当数量特定少的时候,我们可以采用直接创建对象,但是当我们需要创建很多对象的时候,我们就不能一直new,首先是因为堆内存有限,只允许我们new特定数量的对象,因此我们需要另一种方式,快速的实现对象的复制,克隆,因此引入原型模式。 原型模式是什么? 用原型欧实例指定...原创 2018-11-04 15:43:35 · 112 阅读 · 0 评论 -
设计模式笔记之三抽象工厂模式
抽象工厂模式 为什么引入抽象工厂模式? 一个接口代表一系列操作,当我们需要的对象需要多个接口,而这些接口又是不相干的,同时对于类的创建我们不需要知道具体的实现细节,只需要知道某个特征就可以,虽然工厂方法模式可以满足要求,但是工厂方法模式会让类本身实现很多不相关的操作,同时增加了对象内部的复杂性,我们需要一种从更高层来抽象,将接口分离,同时在创建对象的时候,又将不同接口之前操作进行组合的角色,这...原创 2018-11-04 11:51:35 · 129 阅读 · 0 评论 -
设计模式笔记之二工厂方法模式
工厂方法模式 为什么引入工厂方法模式? 当我们需要创建多个实例的时候,而这些类又是有着公共的方法,区别就是实现的具体操作不同,我们需要专门为这些类创建实例,但是,如果我们没有创建这些的类的权限的时候,(并不是说我们真没有new方法,而是外在的因素)我们需要找一个可以帮我们生产对象的工具,这个听起来和代理模式有些相似,但是工厂模式也是工厂代替我们生产我们需要的实例,工厂模式生成的对象之间是相似的...原创 2018-11-04 09:35:41 · 206 阅读 · 0 评论 -
设计模式笔记之九备忘录模式
备忘录模式 为什么引入备忘录模式 在我们的生活中,不可能一番风顺,也会犯错,但是如果可以向word那样,做错了就撤销,回到原来的样子,那就更棒了,又例如数据库,当数据库被破坏,我们通常的做法是从日志中找出原因,如果可以进行恢复,更好,如果不能恢复,我们会将以前备份的数据库迁移过来,然后从数据库日志中查看接下来要执行什么事务,来尽可能的恢复到原来的数据库,在这两种情况下,我们都需要回到事物原来的...原创 2018-11-06 09:37:46 · 107 阅读 · 0 评论 -
设计模式笔记之一单例模式
单例模式 为什么引入单例模式? 当我们需要查看系统的进程,内存的使用情况时,打开任务管理器,可以查看到系统的当前的运行状态,但是在没有关闭上一个任务管理器的时,我们在打开一个任务管理器时,这个时候不会出现第二个任务管理器,因为任务管理器是获取系统的运行情况,实时的分析系统,只需要一个就够了,如果打开多个,有可能造成系统的分析情况不一致。 在这种类似的情况,我们只需要一个对象就可以满足我们的需...原创 2018-11-03 15:35:13 · 138 阅读 · 0 评论 -
设计模式笔记之八职责链模式
职责链模式 为什么引入职责链模式 作为学生的我们,都有过请假的体验,当我们想请假的时候,我们都会写好请假条让班主任签字,然后将假条拿到教导主任处,让其也签字,经过两到门槛,终于可以出校门了,这种需要多重判决,大家共同承担责任的场景就需要责任链模式。 什么是职责链模式 避免将请求发送者和接受者耦合在一起,让多个对象都有机会接受请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处...原创 2018-11-06 08:28:24 · 117 阅读 · 0 评论 -
设计模式笔记之一概要篇
设计模式的起源 模式之父Christopher Alexander(克里斯托弗﹒亚历山大),哈佛大学建筑学博士,美国加州大学伯克利分销建筑学教授,加州大学伯克利分校环境结构研究所所长,美国艺术和科学院院士等,Charistopher Alexander博士及其研究团队用了约20年的时间,对住宅和周边环境进行大量的调查研究和资料收集工作,发现人们对舒适住宅和城市环境存在一个共同的认同规律,Chri...原创 2018-11-03 11:07:13 · 139 阅读 · 0 评论 -
设计模式笔记之十一桥接模式
桥接模式 为什么引入桥接模式 当我们定义某个多个功能的时候,其一,我们需要将各个功能独立,其二,每个功能之间可以进行组合,这个时候我们就需要桥接模式来帮助我们完成任务。 什么是桥接模式 将抽象和实现解耦,使的两者可以独立地变化。 核心思想 Abstraction:抽象画角色,用于定义出该角色的行为,同时保存一个实现的引用。 Implementor:实现的角色的接口,定义了一些行为...原创 2018-11-08 17:10:51 · 108 阅读 · 0 评论