自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Olive的博客

一只小菜鸟~~

  • 博客(21)
  • 收藏
  • 关注

原创 2017这一年

终于赶在2017年末看完了两本书——《分布式服务架构》和《设计模式》。前者碍于相关经验的缺失,只能说走马观花般看个大概;后者的23种设计模式已经在我的博客中写成了相关的技术博客——尽管把学习的过程写成了博客,但对于23种设计模式我也不能说是融会贯通,仍然需要在实际应用中再次深化,在此也很希望能有看过我博客的朋友给出一些指导性的意见。  写博客是暑假实习时候萌生的想法,作为一只在实习前只

2017-12-31 19:49:00 308 1

原创 设计模式——访问者模式

一、什么是访问者模式?   在每个自定义对象中定义一个accept(请求访问)方法,这个方法以对象为参数,调用访问者的对象的visit方法来操作此对象。访问者模式对于开闭原则没有很好的支持,它允许修改节点中的方法,因此访问者模式应该应用在访问类结构比较稳定的时候。   访问者模式涉及到以下几个角色: 1. 抽象访问者:定义访问接口 2. 具体访问者:实现

2017-12-30 11:54:18 254

原创 设计模式——迭代器模式

一、什么是迭代器模式?   我们在Java中经常会遇到集合对象,这些集合对象内部有着各种各样的实现。如果我们去遍历集合中的数据,那么就需要各种各样的实现。迭代器模式就可以解决这种场景,它分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样就可以既不暴露集合内部的结构,又可以让外部程序访问集合内的数据。就像Collection集合类中有List和Set,要去访问他们内部的数据,我们只需要

2017-12-29 11:14:47 204

原创 设计模式——解释器模式

一、什么是解释器模式?   解释器模式定义语言的语法,并建立解释器来解释语法中的句子。如正则表达式等的解释器。  解释器模式涉及到以下几个角色: 1. 抽象表达式角色:定义了具体的表达式需要实现的抽象解释方法或接口 2. 具体表达式角色:指定了具体的表达式的解释 3. 环境(Context)角色: 包含了解释器之外的一些全局信息 4. 客

2017-12-28 11:21:03 250

原创 设计模式——命令模式

一、什么是命令模式?  命令模式将一个请求封装成一个对象,从而可以对不同的请求作出不同的回应。比如在公司,老板发出一条命令给小组leader,leader又派发给手下的组员。这个过程使老板、命令、leader和执行命令的组员几者解耦,任何一方都不用去依赖其他人,只需要做好自己分内的事情,老板只需要结果,他并不需要知道到底哪个员工完成了命令,员工也不需要知道这个命令是谁发布的,只需要按照

2017-12-27 11:10:49 230

原创 设计模式——策略模式

一、什么是策略模式?   策略模式就是定义一系列的算法,并将它们封装,使他们可以相互替换。策略模式使得算法以独立于客户而变化。  策略模式涉及到以下几个角色: 1. 抽象策略角色:定义了具体策略需要实现的抽象方法或接口 2. 具体策略角色:封装具体的算法 3. 环境角色:内部持有策略类对象的引用  举一个简单易懂的例子——计算器,计算

2017-12-26 11:03:04 255

原创 设计模式——状态模式

一、什么是状态模式?   状态模式允许一个对象在其内部状态改变时改变它的行为,可以让对象根据不同的外部情况做出不同的响应。比如在访问论坛网站的时候,我们希望根据用户的性质来区分他们的一些权限,比如游客不能回帖,普通用户不能删帖,而管理员可以有很多特殊权限如置顶,加精等。  简单的来说,状态模式有以下两个角色: 1. 状态(State)角色:封装着不同语境(Con

2017-12-25 10:50:22 298

原创 设计模式——模板方法模式

一、什么是模板方法模式?   我们经常会遇到一个问题:我们明确了某个方法的执行步骤及其顺序,但是某几个步骤的具体实现我们暂时未知,需要按照具体的情况具体处理。模板方法就是定义了某个方法的执行步骤及顺序,而将某些与具体实现的步骤延迟到子类中去执行。模板方法模式把那些不知道具体实现的步骤封装成抽象的方法,子类通过继承去实现各个抽象。  举个形象的例子,如果我们要画画,那么首先我们规定了画画

2017-12-24 11:22:30 383

原创 设计模式——备忘录模式

一、什么是备忘录模式?   备忘录(Memento)模式又叫做标记(Token)模式。备忘录中存放着对象的历史状态,当对象状态改变后,想要恢复先前的状态时,就可以使用备忘录来恢复。  备忘录模式中存在以下角色:  1. 发起者(Originator)角色:创建一个备忘录,内部记录其此时的状态,需要时可以使用备忘录来恢复状态  2. 备忘录(Memento

2017-12-23 11:46:44 405

原创 设计模式——原型模式

一、什么是原型模式?   原型模式是一种创建型的设计模式,是通过已存在的对象实例克隆出一个对象,而不是通过调用构造方法创建的,克隆对象与源对象具有相同的属性。  Java中通过clone()方法来实现对对象的克隆,所以原型模式应用很简单。  根据表现形式原型模式可以分为两种:(1)简单形式 (2)登记形式 二、原型模式框图

2017-12-22 11:30:39 270

原创 设计模式——抽象工厂模式及与工厂模式的区别

一、什么是抽象工厂模式? 抽象工厂模式提供一个创建一系列相关或相互依赖的对象的接口,而无需指定它们具体的类。这样的描述我们会觉得和工厂模式比较像,那么工厂模式和抽象工厂模式的区别是什么呢?这两种设计模式主要的区别在于产品,工厂模式是用来创建同一个产品的不同类型的(详情请看上一篇博客中卖包子的案例,大肉包和牛肉包它们都是包子的不同类型展示),但是抽象工厂模式是用来创建不同类的产品

2017-12-21 11:08:25 15078 11

原创 梦谈——狗爷

今天晚上,我本来早早地回寝室了。大约凌晨2 3点的时候A君与B君[注1]问我要不要一起出去吃夜宵,虽然外面看起来很冷,我还是毫不犹豫地答应了。约好地点,我与他俩说我要换个衣服会晚点过去。换完衣服,寝室楼外已经晨曦微露,我坐上我的电动扭扭车[注2]握好方向盘,像是开了一辆马萨拉蒂,以5km的时速开向目的地。到了夜宵店,A和B已经点了三笼小笼包就着豆浆吃了起来,那装小笼包的屉子和脸盆一般大,里边层层叠

2017-12-19 12:00:52 477

原创 设计模式——工厂模式

一、什么是工厂模式? 工厂模式就是创建一个对象的工厂接口,创建对象不再是通过new这个对象来直接实现,而是通过工厂来对对象进行创建。应用工厂模式可以降低系统间的耦合度。工厂模式中一般有以下角色:1. 抽象产品类:是具体产品对象的基类2. 具体产品类:实现了抽象产品类接口,每一个具体产品类都会对应一个工厂3. 抽象工厂:工厂模式的基类,定义了工

2017-12-19 11:05:58 558 2

原创 设计模式——建造者模式

一、什么是建造者模式? 当一个对象的创建包含该对象的部件部分及部件的装配过程时,建造者模式可以将对象的部件生成过程及装配过程进行分离解耦,从而使系统结构变得更加清晰。举个栗子:我们知道电脑是由CPU,硬盘和内存组成的,那么如果我们要创建一个电脑,首先的思路就是我们去制造CPU、硬盘和内存,然后进行组装,这样就生成了一台电脑。仔细一想,这个模式存在很多问题,它将部件的生成和组装放在了一起,那

2017-12-15 11:25:58 346

原创 设计模式——享元模式

一、什么是享元模式? 享元模式的主要目的是实现对象的共享,当系统中有多个相同的对象,那么不需要实例化多个对象,只需要共享一个对象即可,这和对象池的概念类似,通常与工厂模式一起使用。比如有一家店做外卖,如果每以个订的食物都作为一个对象,那么几千单就有几千个食物对象,这是一种耗费内存的操作。事实上,一家店的菜单上食物一共也就几十种,这几千个订单完全可以共享相同的食物对象,这就是享元模式的一个应

2017-12-14 10:16:16 266

原创 设计模式——中介模式

一、什么是中介模式?中介即Mediator,用中介对象来讲交互的几个对象进行封装,对象间不再直接进行通讯,而是通过中介间接沟通,降低了对象之间的耦合程度。当对象之间进行复杂的交互,对象之间的依赖混乱,这个时候就可以使用中介模式。二、中介模式框图使用中介模式的一个典型的场景是相亲。以前的相亲涉及到了男女两方及互相的父母,如果男方想向女方提出约会的请求,这个时候男方

2017-12-13 10:00:23 249

原创 设计模式——单例模式的几种写法

一、单例模式单例模式是一种创建型的模式,指某个类采用单例模式后,在这个类被创建后,只产生一个实例以供外部访问,且提供一个全局的访问点。单例模式在开发中具有相当大的重要性,并且代码实现相对简洁。所以其是为数不多的在面试中会被问到且要求手撸代码的设计模式哦:)。 二、几种单例的写法及比较1. 饱汉模式package designpatterns.sing

2017-12-08 13:53:16 287

原创 设计模式——责任链模式

一、什么是责任链模式?责任链模式中,存在多个对象,每个对象持有对下一个对象的引用而形成一条链,请求在这条链上传递,直到其中某一对象决定处理该请求。然而请求发出者并不清楚最终哪一个对象会处理该请求,所以,责任链模式可以在不影响客户端的情况下,对系统进行动态的调整和重新组织。责任链虽然叫做链,但是事实上它的结构可能是一个单向的链表,也可能是一个单向环形链表,也有可能是一个树状结

2017-12-06 10:21:19 217

原创 设计模式——桥接模式

一、什么是桥接模式?《大话设计模式》中有一个场景:当我们要进行绘画时,有两种选择:蜡笔和水彩。蜡笔是将笔和颜料混合在一起成为了一个整体,那么如果我们需要大号、中号、小号各12种颜色的蜡笔,总共36支,这无疑是一笔很大的花费,那么如果使用水彩呢?水彩用的是毛笔,我们只需要大中小三支毛笔,以及12种需要的颜料就可以完成这项任务,这样总共只需要15种物品,大大减少了需要的物品数目。这就是典型的桥接模

2017-12-04 10:26:56 389 1

原创 设计模式——组合模式

一、什么是组合模式?让我们想象一个场景,原本我们在网上买东西是一件一件支付的,享受的折扣也只有店家提供的满减红包,但是在双十一的时候,退出了“跨店满减”活动,这个时候我们需要把要购买的商品打包一起支付以享受更加优惠的折扣。这就是典型的组合模式的一个运用。组合模式将对象组成树形结构,使得用户对于单个对象和组合对象的使用一致。组合模式有时又叫“部分-整体模式”,消除了单个对象与组合对象在使

2017-12-02 18:46:57 418

原创 设计模式——外观模式

一、定义:如果有一个系统,内部分为三个子系统:S1,S2,S3,当用户A调用了子系统S1,S2的接口,用户B也调用了子系统S1,S2的接口。那么当子系统S1,S2发生变化时,它们将会影响到所有调用了子系统的客户,子系统与用户的直接交互无疑使他们之间高度耦合,这个时候用外观模式就是很合适的。外观模式将子系统的接口集成在一个高层接口中,使用者可以直接调用高层的接口而忽略其内部子系统的变化,

2017-12-01 11:43:15 189

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除