#新模式

门面(Facade)模式

  外部与一个子系统的通信必须通过一个统一的门面对象进行就是门面模式。   门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。   门面模式没有一个一般化的类图描述,最好的描述方法实际上就是以一个例子说明。如...
代码星球 ·2020-08-27

享元(Flyweight)模式

  享元模式以共享的方式高效地支持大量的细粒度对象。能做到共享的关键是内蕴状态和外蕴状态。  内蕴状态是存储在享元对象内部的,并且是不会随环境变化而有所不同。因此,一个享元可以具有内蕴状态并且可以共享。  外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象创建之后,在需要使...
代码星球 ·2020-08-27

代理(Proxy)模式

  代理(Proxy)模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。  所谓代理,可以理解为一个人或者机构代表另一个人或者机构采取行动。按照使用目的划分,分为以下几种:  远程(Remote)代理:为一个位于不同地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器...
代码星球 ·2020-08-27

装饰(Decorator)模式

  装饰(Decorator)模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的另一个替代方案。  装饰模式以对客户透明的方式动态地给对象增加更多的责任。也就是说,客户端并不知道对象在装饰前和装饰后又什么区别。装饰模式可以在不使用创造更多的子类的情况下将对象的功能进行扩展。  ...
代码星球 ·2020-08-27

合成(Composite)模式

  合成(composite)模式属于对象的结构模式,有时又叫部分-整体模式。合成模式将对象组织到数结构中,可以用来描述整体与部分的关系。文件系统  一个文件系统就是一个典型的合成模式系统。下图所示就是常见的PC文件系统的一部分。  文件系统是一个树结构,树上长有节点。树的节点有两种,一种是树枝节点,即目录,有内部树结...
代码星球 ·2020-08-27

适配器(Adapter)模式

  适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。   适配器模式的一些其他名称:变压器模式、转换器模式、包装(Wrapper)模式。适配器模式可以用于增加新的方法,但是,其主要意图是转换接口。1. 现实生活中的适配器模式  连...
代码星球 ·2020-08-27

原始(Prototype)模式

  原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型对象创建新的对象。  原型模式其实就是从一个对象创建另外一个可复制的对象,而且不需要知道任何创建的细节。(最常用的就是基于流的深复制) 原始模型模式   Java语言本身支持原始原型模式。所有的JavaBean都继承自Java.lang...
代码星球 ·2020-08-27

建造(Builder)模式

  建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。  摘自EffectiveJava:当构造方法参数过多时使用建造者模式。产品的内部表象  一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表象(...
代码星球 ·2020-08-27

序列键生成器及单例多例模式

  有时候我们希望生成全局唯一的序列号。可以用于生成主键或者生成全局的序列号用于生成编号或者其他。这时候我们可以用SQL语句自行管理键值。使用一个表来存储所有的键列值。如下表所示:key valuePO_NUMBER105SE_NUMBER2555......  预定式键值存储:在预定一个值时首先将值更新为下一个可用值...

抽象工厂(AbstractFactory)模式

  抽象工厂模式又称工具箱模式。其实抽象工厂模式可以简单的理解为一个工厂生成一个产品族的产品。  抽象工厂模式可以向客户端提供一个接口,使得客户端在不指定产品的具体类型的情况下,创建多个产品族中的产品对象。这也是抽象工厂模式的用意。  抽象工厂模式面对的是一个产品等级结构的系统设计。  抽象工厂模式和工厂模式最大的区别...

工厂方法(FactoryMethod)模式

  之前说了简单工厂设计模式如果增加一个新的运算的时候需要:增加一个具体的实现类,工厂类中增加一个case分支。也就是说我们不但对扩展开发了,也对修改开放了,违背了开闭原则。当然如果工厂类采用反射的话不存在这个问题。(实际工作中工厂类使用反射也是最常见的运用方式)  工厂方法模式(多态性工厂或虚拟构造子模式):定义一个...

简单工厂(SimpleFactory)模式

  简单工厂模式是类的创建模式,又叫做静态工厂方法(StaticFactoryMethod)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。  简单工厂就是将多个if,else...代码块拆开,增加代码的可阅读性、便于后期的维护。一个接口,几个实现接口的类,再通过传参的形式在工厂类中根据类型去创建相应的...

单例模式与多线程

  单例模式的三个要点:一是某个类只有一个实例,二是它必须自行创建这个实例,三是它必须自行向整个系统提供这个实例。  单例模式在应用中比较常见,比如我们的web系统中service层和dao层的对象就是单例模式,如果控制层采用的是struts的话是多例模式,如果是SpringMVC的话就是单例模式。(这里涉及的是spr...
代码星球 ·2020-08-27

生产者/消费者模式实现

  wait/notify最经典的案例就是"生产者/消费者"模式。但是此模式有一些需要注意的地方。  生产者-消费者也有多种实现方式。    (1)常见的就是synchronized结合wait+notify实现    (2)用Lock类实现    (3)使用BlockingQueue阻塞队列实现1.一个简单的生产者消...

redis实现消息队列&发布/订阅模式使用

  在项目中用到了redis作为缓存,再学习了ActiveMq之后想着用redis实现简单的消息队列,下面做记录。   Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易的实现一个高性能的优先队列。同时在更高层面上,Redis还支持"发布/订阅"的消息模式,可以基于此构建一个聊天系统。  ...
首页上一页...3940414243...下一页尾页