
设计模式
evior
因为爱 所以爱
展开
-
设计模式------策略模式
写代码时总会出很多的if…else,或者case。如果在一个条件语句中又包含了多个条件语句就会使得代码变得臃肿,维护的成本也会加大,而策略模式就能较好的解决这个问题,本篇博客就带你详细了解策略模式。策略模式的定义和使用场景定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。分析下定义,策略模式定义和封装了一系列的算法,它...原创 2018-08-22 18:05:28 · 143 阅读 · 1 评论 -
设计模式-----享元模式
享元模式定义享元模式是结构型设计模式的一种,是池技术的重要实现方式,它可以减少应用程序创建的对象,降低程序内存的占用,提高程序的性能。定义:使用共享对象有效的支持大量细粒度的对象要求细粒度对象,那么不可避免地使得对象数量多且性质相近,这些对象分为两个部分:内部状态和外部状态。内部状态是对象可共享出来的信息,存储在享元对象内部并且不会随环境的改变而改变。而外部状态是对象依赖的一个标记是随...转载 2018-08-28 11:25:08 · 152 阅读 · 0 评论 -
设计模式---责任链模式
责任链模式 Chain of Responsibility什么是责任链模式 如何实现责任链模式 责任链模式如何解耦 责任链模式的应用生活中的COR - 击鼓传花 - 申请折扣天然的责任链:公司层级结构 - CEO - Vice President - Director/Manager - SalesHandler:Sales->Manager->Dir...原创 2018-08-28 16:22:45 · 179 阅读 · 0 评论 -
设计模式----工厂模式
工厂模式详解特点:1、 隐藏复杂的逻辑处理过程, 只关心执行结果。工厂模式有三种:1、简单工厂,功能强大,但是可扩展性不强 2、工厂方法,独立分工,但是学习成本过高 3、抽象工厂,简单工厂和工厂方法的结合体我们以汽车制造来说,假如一个4S店需要选购一批汽车,从宝马、奔驰、奥迪生产厂家拿到这些汽车。 我们通过工厂模式来实现,4S店选购到这些汽车。简单工厂模式解刨:...原创 2018-08-24 21:16:29 · 456 阅读 · 0 评论 -
设计模式---命令模式
定义 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。理解将一个请求(调用)封装为一个对象,从而可用不同的请求对客户进行参数化,将“发出请求的对象”和“接收和执行请求的对象”分离开。它的精髓在于封装了具体的调用。 我们从定义中了解到,一个命令对象通...转载 2018-08-24 21:23:46 · 123 阅读 · 0 评论 -
设计模式---适配器模式
一 概述定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。属于结构型模式主要分为三类:类适配器模式、对象的适配器模式、接口的适配器模式。本文定义:需要被适配的类、接口、对象(我们有的),简称 src(source) 最终需要的输出(我们想要的),简称 dst ...转载 2018-08-24 21:34:48 · 136 阅读 · 0 评论 -
设计模式----备忘录模式
备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。 一。简解备忘录模式可以理...转载 2018-08-25 22:27:54 · 179 阅读 · 0 评论 -
设计模式---外观模式
简介Facade模式也叫外观模式,是由GoF提出的23种设计模式种的一种Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade类比理解:电影发行公司,他去跟影院谈影片排片时,他会说自己能拍出哪些类型的电影,希望这几部电影排片率高一些,那么影院真正找电影发行公司要电影发行时,电影发行公司提供电影,但是他的电影都...转载 2018-08-25 22:44:23 · 144 阅读 · 0 评论 -
设计模式---模板方法
设计模式 - 模版方法场景小张的团队最近接受一个需求,实现实现一家咖啡店的冲泡咖啡和茶的冲泡自动化。之前这家咖啡店都是由咖啡师傅手动进行调制咖啡和茶。现在咖啡店需要引入自动化的点单和调制饮料的系统,小张负责实现调制饮料的功能。咖啡师傅手工冲泡咖啡和茶的流程:冲泡咖啡:把水煮沸 用沸水冲泡咖啡 把咖啡倒入杯子 加糖和牛奶冲泡茶:把水煮沸 用沸水冲泡茶叶 把茶倒入杯...转载 2018-08-25 22:54:46 · 143 阅读 · 0 评论 -
设计模式-----桥接模式
桥接模式概述:将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化.如何实现解耦的呢,就是通过提供抽象化和实现化之间的桥接结构. 应用场景 实现系统可能有多个角度分类,每一种角度都可能变化. 解释:桥接模式将继承模式转化成关联关系,他降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量. 理解抽象化,实现化,解耦 抽象化:将复杂物体的一个或几个共同...转载 2018-08-28 11:02:02 · 120 阅读 · 0 评论 -
设计模式----原型模式
1 原型模式概念1.1 介绍 原型模式是一个创建型的模式。原型二字表明了改模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。1.2 定义 用原型实例指定创建对象的种类,...转载 2018-08-28 10:44:27 · 146 阅读 · 0 评论 -
设计模式----建造者模式
建造者模式建造者模式,是为创建复杂且又多变的对象,而诞生的一种模式。我们先整理一下,这样复杂的一个对象,想创建它又哪些难点:1、创建步骤繁杂,2、子类特别多。我就以造房子为例,一步一步地将建造者模式融入到我们的代码当中。我们找到了一个专门造套房的团队,他们会打地基,会砌墙,会铺电线,会打孔,会铺砖...各种各样的技能。那么最原始的方法,就是我们拿到这个团队,然后按造房子的步骤走,例子如...转载 2018-08-28 10:35:27 · 123 阅读 · 0 评论 -
设计模式---观察者模式
问题引入:Internet气象站项目: 提供温度、气压和湿度的接口 测量数据更新时需时时通知给第三方 需要设计开放型API,便于其他第三方公司也能接入气象站获取数据 传统oo设计UML代码实现:WeatherData:package com.java.hexter.internetweather;/** *天气数据 **/public...原创 2018-08-22 21:44:42 · 143 阅读 · 0 评论 -
设计模式---装饰者模式
问题:设计咖啡馆订单项目: 1)、咖啡种类:Espresso、ShortBlack、LongBlack、Decaf 2)、调料:Milk、Soy、Chocolate 3)、扩展性好、改动方便、维护方便 1、一个差的方案 2、 一个好一点的设计方案 3、 有些问题 1)增删调料种类 2)添加多份问题装饰者模式原理 1、装饰者模式...原创 2018-08-23 21:33:03 · 138 阅读 · 0 评论 -
设计模式----单例模式
Java单例模式单例的好处单例模式适合于应用中频繁创建的对象,如果是重量级的对象,更应该使用单例模式。比如配置文件,如果不采用单例模式的话,每个配置文件对象的内容都是一样的,创建重复的对象就会浪费宝贵的内存,所以有必要使用单例模式,达到性能的提升,减小了内存的开销和GC的压力。本文会一步一步由浅入深的讨论如何实现正确的单例模式。单例模式的一般写法饿汉式public class ...转载 2018-08-23 21:53:59 · 122 阅读 · 0 评论 -
设计模式------迭代器模式
迭代器模式: 提供一种方法顺序访问聚合对象(如List、Set)内的每个元素, 而又不暴露聚合对象的内部实现. 模式实现 Iterator & AggregateIterator: 迭代器 定义访问和遍历元素的接口 Aggregate: 聚合 定义创建响应迭代器对象的接口由于Java已内置了java.lang.Iterable和java.ut...转载 2018-08-28 08:48:15 · 116 阅读 · 0 评论 -
设计模式----组合模式
组合模式也叫合成模式,用来描述部分和整体的关系。 组合模式,也是很多人没有听说过的,那就不妨了解一下。 其实组合模式就是上级管理下级的关系模式,比如说经理可以管理几个员工,他是有增删改查功能,而经理也是被总经理管理。。。一.组合模式的现实场景:我的设计王小华大学毕业后到公司实习,实习岗位是软件开发。某个项目正好有个功能需要有人开发,领导便把这个任务分配給他。功能需求是统计全公司的员工信...原创 2018-08-28 09:08:31 · 1447 阅读 · 1 评论 -
设计模式的总体介绍
Java设计模式概述 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。一、设计模式的分类总体来说设计模式分为三大类(23种):创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适...原创 2018-08-28 09:11:00 · 172 阅读 · 0 评论 -
设计模式--状态模式
场景一描述:现在城市发展很快,百万级人口的城市一堆一堆的,那其中有两个东西的发明在城市的发展中起到非常重要的作用:一个是汽车,一个呢是...,猜猜看,是什么?是电梯!汽车让城市可以横向扩展,电梯让城市可以纵向延伸,向空中伸展。汽车对城市的发展我们就不说了,电梯,你想想看,如果没有电梯,每天你需要爬10 层楼梯,你是不是会崩溃掉?建筑师设计了一个没有电梯的建筑,那投资家肯定不愿意投资,那也是建筑...转载 2018-08-28 09:28:59 · 185 阅读 · 0 评论 -
设计模式--代理模式
本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇文章中讲述。代理模式是什么代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展。比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing()。假如你希望,通过你的某种方式生产出来的歌手对象,在唱歌前后还要想观众问好和答谢,也即对目...转载 2018-08-28 09:58:16 · 106 阅读 · 0 评论 -
设计模式---中介者模式
从前面讲到的设计模式的分类中,我们应该得知中介者模式是行为型模式的一种,旨在处理类或对象如何交互及如何分配职责。 中介者模式又叫做调停者模式,名字跟出国留学中介和房产中介是类似的。拿房产中介来说,现在房子买家和房子卖家非常多,如果任由房子买家和房子卖家自由交易,则会导致不同的买家和卖家之间有很多交互,一个买家会和多个卖家进行交涉,同样的一个卖家也会和多个买家进行交涉。如果在买房的过程中出现纠纷问...转载 2018-08-30 10:58:39 · 500 阅读 · 0 评论