设计模式 - 单例模式(详解)看看和你理解的是否一样?

一、概述 单例模式是设计模式中相对简单且非常常见的一种设计模式,但是同时也是非常经典的高频面试题,相信还是有很多人在面试时会挂在这里。本篇文章主要针对单例模式做一个回顾,记录单例模式的应用场景、常见写法、针对线程安全进行调试(看得见的线程)以及总结。相信大家看完这篇文章之后,对单例模式有一个非常深刻的认识。 文章中按照常见的单例模式的

  • 0
  • 0
  • 阅读 ( 1203 )

设计模式-行为型-迭代器模式

迭代器模式(Iterator):
   迭代器模式允许你访问一个数据项序列中的所有元素,而无须关心序列是什么类型(数组、链表、列表或任何其他类型)。它能有效地构建一个数据管道,经过一系列不同的转换或过滤后再从管道的另一端出来。迭代器模式就是提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示。
 迭代器模式的

  • 0
  • 0
  • 阅读 ( 1403 )

行为型设计模式(下)

策略模式:
 
   1、定义:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户
   2、模型结构:
     (1)抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,
              环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现
    

  • 0
  • 0
  • 阅读 ( 1100 )

设计模式-行为型-中介者模式

中介者模式(Mediator):
   在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群、短信平台和房产中介。不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋友进行聊天的话,可能就需要当面才可以了。电话、短信也同样是一个中间平台,有了这个中间平台

  • 0
  • 0
  • 阅读 ( 1505 )

部分设计模式对比分析

桥接模式与装饰者模式区别:
 桥接模式类图
 
 装饰者模式类图
 
   1、定义:
     (1)桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化
     (2)装饰者模式:动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活
   2、“独立部分”不同:
     (1)桥接模式:抽象类和

  • 0
  • 0
  • 阅读 ( 1469 )

设计模式-行为型-访问者模式

访问者模式(Vistor):
   访问者模式的官方定义是这样的:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。官方的东西总是晦涩难懂的,那么我们现在就来拆解一下:首先"一个作用于某对象结构中的各元素的操作",提到了三个东西:对象结构、元素、操作。我们都学习过数据结构,数据结构中大家对

  • 0
  • 0
  • 阅读 ( 1513 )

通俗易懂设计模式解析——迭代器模式

前言
   今天我们一起看看行为模式中的迭代器模式,迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。在系统开发中简单说可以理解成遍历。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层或者内部表示。
 迭代器模式介绍
 一、来由
   在系统开发中,集合对象内部表示各不相同。底层构造也尽不相同。对于

  • 0
  • 0
  • 阅读 ( 1228 )

设计模式-行为型-备忘录模式

备忘录模式(Memento):
   后悔药来啦!!!备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便在需要时能将该对象恢复到原先保存的状态。
 备忘录模式的角色:
   
   1)发起人(Originator):记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘

  • 0
  • 0
  • 阅读 ( 1303 )

设计模式-行为型-解释器模式

解释器模式(Interpreter):
   从名称上来看看这个模式,个人的最初理解“解释器”和Google的中英翻译功能类似。如果有一天你去国外旅游去了,比如去美国吧,美国人是讲英语的,我们是讲汉语的,如果英语听不懂,讲不好,估计沟通就完蛋了,不能沟通,估计玩的就很难尽兴了,因为有很多景点的解说你可能不明白(没有中文翻译的情况下,一般情况会有的)。所以

  • 0
  • 0
  • 阅读 ( 1364 )

通俗易懂设计模式解析——观察者模式

前言
   今天我们一起看看这个观察者模式,这个模式简单来说就是一个发布订阅类似的模式。按照名字来理解也就是存在一个观察者和一个被观察者。说几个例子给大家听,大家应该就明白了。例如在我们现在通过银行卡支付之后,会收到银行发过来的提示信息。例如当我们话费余额或者流量不足之时也会收到提示信息。这其中的逻辑帮我们理解观察者模式。当我们观

  • 0
  • 0
  • 阅读 ( 1333 )

通俗易懂设计模式解析——中介者模式

前言
   今天我们一起看看中介者模式,怎么去理解这个模式呢?说起来也简单、好理解。生活中我们租房经常都是通过中介来实现的。一般租房要么是房东直租要么是中介。那么今天要讲的中介者模式和租房的这个中介是否有关系呢?当然是有点关系的。中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,这个类就来处理不同类之间的

  • 0
  • 0
  • 阅读 ( 1138 )

通俗易懂设计模式解析——状态模式

前言
   今天我们讲的是状态模式【StatePattern】、这个名字咋一看不好理解,但是仔细一想还是比较容易的。状态模式重点关注的是状态。状态又牵扯着什么呢?房屋的状态暂且可以分为出租、签订合同、退房。那么出租对应的是什么呢?出租状态代表可以租房。可以租房是一个行为了。所以不难理解的是状态模式关注的是状态的改变与行为的变化。
 状态模式介绍

  • 0
  • 0
  • 阅读 ( 1316 )

设计模式之☞代理模式

一、代理模式的作用
 将主要业务与次要业务进行松耦合的组装
 二、代理模式本质
 监控行为的特征
 例子:
   <inputtype="button"onclick="处理函数">
 三、生活案例
 案例:饭前便后要洗手
 分析:
   1.分析出主要业务和次要业务
   【主要业务】:吃饭,上厕所
   【次要业务】:洗手
   2.JDK代理模式实现
     2.1、接口

  • 0
  • 0
  • 阅读 ( 1101 )

设计模式 - 动态代理原理及模仿JDK Proxy 写一个属于自己的动态代理

本篇文章代码内容较多,讲的可能会有些粗糙,大家可以选择性阅读。 本篇文章的目的是简单的分析动态代理的原理及模仿JDKProxy手写一个动态代理以及对几种代理做一个总结。 对于代理模式的介绍和讲解,网上已经有很多优质的文章,我这里就不会再过多的介绍了,这里推荐几篇优质的文章作为参考: 给女朋友讲解什么是代理模式 轻松学,Java中的代理模式及动态代理 另

  • 0
  • 0
  • 阅读 ( 1173 )

设计模式之美—单例模式

单例模式
 什么是单例?
 该类只能有一个实例。
 该类负责创建自己的对象。
 在整个项目中都能访问到这个实例。
 应用场景
 读配置文件时,维护全局的Config类。
 线程池、连接池,统一进行分配和管理。
 网站的计数器,也可以采用单例模式实现,保持同步
 代码实现
 饿汉式
    中国古代神话中有女娲补天一说,现在天破了,我们去求女

  • 0
  • 0
  • 阅读 ( 1202 )

通俗易懂设计模式解析——策略模式

前言
   今天我们来看策略模式【StragetyPattern【行为型】】,这个模式还是比较好理解的。策略怎么理解呢?一般是指:1.可以实现目标的方案集合;2.根据形势发展而制定的行动方针和斗争方法;3.有斗争艺术,能注意方式方法。总的来说呢就是针对一个目的的不同的方法集合。这里要讲的策略模式怎么理解呢?简单的说就是对于一个类的行为或者其算法可以在运行时更

  • 0
  • 0
  • 阅读 ( 1160 )

设计模式之美—简单工厂模式

简单工厂模式
   简单工厂模式分为三种:普通简单工厂、多方法简单工厂、静态方法简单工厂。
 普通工厂模式
   最近看了老酒馆电视剧,深深被陈怀海他们的情怀所感动,当然里面也有很多的酒,比如扳倒井,闷倒驴,跑舌头,吹破天,二闺女,枕头亲。我们以酒为例:
   创建酒的接口:
 
 
 publicinterfaceLiqueur{
 publicvoidtaste();//酒味
 }

  • 0
  • 0
  • 阅读 ( 1189 )

设计模式之美—工厂方法模式

工厂方法模式
   简单工厂模式有一个问题就是,类的创建依赖工厂类。
   如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?
   就用到工厂方法模式,创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。  
  

  • 0
  • 0
  • 阅读 ( 1525 )

通俗易懂设计模式解析——责任链模式

前言
   今天我们介绍的是责任链模式【ChainofResponsibilityPattern】。对于责任链模式理解起来还是比较容易的。例如在公司请假、三天以内部门经理批准即可,但是三到七天可能就需要总监批准了、七天以上需要副总裁批准。对于这么一个需求最初的解决方案就是if-else语句判断。但是一旦请假的模式增加一种则需要对多重if-else进行修改,这就违背了开闭原则。这个时候就

  • 0
  • 0
  • 阅读 ( 1714 )

Head First设计模式——策略模式

1、继承带来的扩展和复用问题
 继承作为面向对象的三大要素(封装、继承、多态)之一为什么会带来问题,问题如何解决然后形成一种设计模式,headfrist设计模式书中以鸭子作为例子讲解什么情况下继承的方式会带来问题。首先有各种各样的鸭子,那么自然想到各种鸭子继承自一个父类:父类为Duck,现有绿头鸭GreenHeadDuck和红头鸭RedHeadDuck
 
 publicabstractClassDuck{
   p

  • 0
  • 0
  • 阅读 ( 1259 )