设计模式
文章平均质量分 71
weixin_40657079
这个作者很懒,什么都没留下…
展开
-
设计模式之禅---六项基本原则
《设计模式之禅》经过一个假期的阅读也有一点小收获,充实了自己的假期吧!以下是自己的一点点见解,理解尚浅谨以此记录自己的学习经历。第一部分 六项基本原则单一职能原则:每一个类实现的功能和作用要单一,比如实体类实现的是单纯的属性和get,set方法,是为了能生成一个纯净的类。实现逻辑操作的要重新生成一个类,不要在实体类中给出复杂业务逻辑的操作。调用到业务逻辑的服务操作也要重新生成一个类,边...原创 2018-08-19 11:41:13 · 226 阅读 · 0 评论 -
Disruptor 极速体验
已经不记得最早接触到 Disruptor 是什么时候了,只记得发现它的时候它是以具有闪电般的速度被介绍的。于是在脑子里, Disruptor 和“闪电”一词关联了起来,然而却一直没有时间去探究一下。 最近正在进行一项对性能有很高要求的产品项目的研究,自然想起了闪电般的 Disruptor ,这必有它的用武之地,于是进行了一番探查,将成果和体会记录在案。一、什么是 Disrupto...转载 2018-10-29 20:12:03 · 106 阅读 · 0 评论 -
设计模式之禅--24.MVC模式
MVC 模式MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。 View(视图) - 视图代表模型包含的数据的可视化。 Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型...转载 2018-09-08 16:50:00 · 87 阅读 · 0 评论 -
设计模式之禅--25.业务代表模式
业务代表模式业务代表模式(Business Delegate Pattern)用于对表示层和业务层解耦。它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能。在业务层中我们有以下实体。客户端(Client) - 表示层代码可以是 JSP、servlet 或 UI java 代码。 业务代表(Business Delegate) - 一个为客户端实体提供的入口类,它提供了对业务...转载 2018-09-08 16:43:29 · 127 阅读 · 0 评论 -
设计模式之禅--26.组合实体模式
组合实体模式组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的。以下是组合实体 bean 的参与者。组合实体(Composite Entity) - 它是主要的实体 bean。它可以是...转载 2018-09-08 16:36:53 · 110 阅读 · 0 评论 -
设计模式之禅-抽象工厂模式VS建造者模式
注意看上面的描述,我们在抽象工厂模式中使用“工厂”来描述构建者,而在建造者模式中使用“车间”来描述构建者,其实我们已经在说它们两者的区别了,抽象工厂模式就好比是一个一个的工厂,宝马车工厂生产宝马SUV和宝马VAN,奔驰车工厂生产奔驰车SUV和奔驰VAN,它是从一个更高层次去看对象的构建,具体到工厂内部还有很多的车间,如制造引擎的车间、装配引擎的车间等,但这些都是隐藏在工厂内部的细节,对外不公布。也...原创 2018-08-29 09:09:32 · 307 阅读 · 0 评论 -
设计模式之禅-工厂方法模式VS建造者模式
工厂方法模式和建造者模式都属于对象创建类模式,都用来创建类的对象。但它们之间的区别还是比较明显的。● 意图不同在工厂方法模式里,我们关注的是一个产品整体,如超人整体,无须关心产品的各部分是如何创建出来的;但在建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序,它关注的是“由零件一步一步地组装出产品对象”。简单地说,工厂模式是一个对象创建的粗线条应用,建造者模式则是通过细线条勾勒出...原创 2018-08-29 09:09:42 · 252 阅读 · 0 评论 -
设计模式之禅--23.桥梁模式
桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同...转载 2018-09-08 23:12:26 · 112 阅读 · 0 评论 -
设计模式之禅--22.享元模式
享元模式享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color 属性被...转载 2018-09-08 23:17:22 · 105 阅读 · 0 评论 -
Single Threaded Execution
定义Single Threaded Execution模式定义:同一时间能够执行的线程只有一个。引例一次只允许一个人通过的门类说明 名字 说明 Main 创建门,让3个人不断通过 Gate 门,通过时记录姓名和出生地。如果姓名和出生地不一致,拒绝通过 UserThread 人,人们不断通过门 public class Main { p...翻译 2019-02-28 17:34:23 · 135 阅读 · 0 评论 -
thread-specific stroage模式 一个线程一个储物柜
定义:thread-specific stroage模式 是一种即使只有一个入口,也会在内部为每个线程分配特定的空间的模式引例:不用thread-specific stroage模式 的实例public class Log { private static PrintWriter writer = null; // 初始化writer字段 stati...转载 2019-03-02 14:27:04 · 121 阅读 · 0 评论 -
Future模式 --先给你提货带
定义:获取Future角色的线程会在稍后使用Future角色来获得运行的结果。引例:类的一览表 名字 说明 main 向host发出请求并获取数据 data 表示访问数据方法的接口。 host 向请求返回futuredata实例的类 futuredata 表示提货带类 realdata 表示真实数据 public clas...翻译 2019-03-10 14:08:23 · 153 阅读 · 0 评论 -
Worker Thread模式--工作没来就一直等,工作来了就干活
定义:Worker Thread模式也叫背景模式或者线程池模式,工作线程逐个取回并处理,在所有工作完全完成后,线程等待新的工作到来。引例:类的一览表 名字 说明 main 测试行为类 clientthread 表示发出工作的类 request 表示工作请求的类 channel 接受工作并将工作请求交给工人线程 workerthread...翻译 2019-03-10 13:59:13 · 404 阅读 · 0 评论 -
Thread-Per-Message模式 这项工作交给你
定义:在Thread-Per-Message模式中,消息的委托者和执行者是不同线程的,消息的委托者把消息的交给执行者去执行。引例类的一览表 名字 说明 mian 向host发送 字符显示请求的类 host 针对请求创建的类 helper 提供字符显示功能的被动类 public class Main { public static vo...翻译 2019-03-10 13:47:28 · 140 阅读 · 0 评论 -
Read-Write Lock模式 --大家一起读可以,读的时候不要写
定义:线程执行读取操作时,实例的状态不会发生改变,所以多个线程可以同时读取。线程执行写取操作时,实例的状态可能会发生改变,所以多个线程不可以同时写入。引例类的一览表 名字 说明 main 测试行为的类 data 可以读写的类 writerthread 写入线程 readthread 读取线程 readwritelock 提供读写...翻译 2019-03-10 13:32:43 · 316 阅读 · 0 评论 -
Producer-Consumer--生产者消费者
定义:Producer-Consumer--生产者消费者模式:生产者将数据交给消费者。引例:类的一览表 名字 说明 main 测试行为类 makethread 厨师类 eaterthread 客人类 table 桌子类 /* * * ProducerConsumer中的角色 * 1.producer * ...翻译 2019-03-02 14:12:39 · 422 阅读 · 0 评论 -
Balking模式--不需要就算了
定义:Balking模式也有守护条件,如果守护条件不成立,立即中断处理。引例名字 说明 Data SaverThread ChangeThread Main public class Data { private String filename; //修改是的名字 private String ...翻译 2019-02-28 18:41:15 · 232 阅读 · 0 评论 -
Guarded Suspension模式 --等我准备好
定义:Suspension模式通过线程等待来保证实例的安全性。引例类的一览表 名字 说明 Request 请求类 RequestQueue 依次存放求情的类 ClientThread 发送请求类 ServerThread 接受请求类 Main 测试行为类 public class Request { private fi...翻译 2019-02-28 18:22:27 · 153 阅读 · 0 评论 -
设计模式之禅--21.解释器模式
解释器模式解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。介绍意图:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决:对于一些固定文法构建一个解释句子的解释器。何时使用...转载 2018-09-10 19:24:35 · 81 阅读 · 0 评论 -
设计模式之禅--20.状态模式
状态模式在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。介绍意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为...转载 2018-09-09 08:37:22 · 159 阅读 · 0 评论 -
设计模式之禅--8.中介者模式
中介者模式的定义中介者模式的定义为:Define an object that encapsulates how a set of objectsinteract.Mediator promotes loose coupling by keeping objects from referring to each otherexplicitly,and it lets you vary thei...原创 2018-08-29 10:46:47 · 158 阅读 · 0 评论 -
设计模式之禅--7.原型模式
原型模式(Prototype Pattern)定义Specify the kinds of objects to create using a prototypical instance,and create new objects bycopying this prototype.(用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。)原型模式的通用类图 原型模式的核...原创 2018-08-27 17:04:48 · 159 阅读 · 0 评论 -
设计模式之禅--4.模板方法模式
模板方法模式定义模板方法模式(Template Method Pattern)是如此简单,以致让你感觉你已经能够掌握其精髓了。其定义如下:Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.TemplateMethod lets subclasses redefine ce...原创 2018-08-28 16:55:22 · 133 阅读 · 0 评论 -
设计模式之禅--3.抽象工厂模式
抽象工厂模式定义抽象工厂模式(Abstract Factory Pattern)是一种比较常用的模式,其定义如下:Provide an interface for creating families of related or dependent objects without specifyingtheir concrete classes.(为创建一组相关或相互依赖的对象提供一个接口,而且...原创 2018-08-28 16:38:47 · 374 阅读 · 0 评论 -
设计模式之禅--5.建造者模式
建造者模式的定义建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:Separate the construction of a complex object from its representation so that the sameconstruction process can create different representations.(将一个复杂对象的...原创 2018-08-29 09:09:20 · 155 阅读 · 0 评论 -
设计模式之禅--6.代理模式
代理模式式定义(Provide a surrogate or placeholder for another object to control access to it.为其他对象提供一种代理以控制对这个对象的访问。)代理模式包含如下角色:ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口。RealSubject:真实主题角色,是实现抽象主题接口的类。...原创 2018-08-27 11:00:20 · 174 阅读 · 0 评论 -
设计模式之禅--2.工厂模式
工厂方法模式定义Define an interface for creating an object,but let subclasses decide which class toinstantiate.Factory Method lets a class defer instantiation to subclasses.(定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使...原创 2018-08-19 13:50:29 · 173 阅读 · 0 评论 -
设计模式之禅--1.单例模式
单例模式定义Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)单例模式的通用类图演示代码首先我们定义一个皇帝类,历史上所有的皇帝都希望自己的王朝中只有自己一个皇帝。public class ...原创 2018-08-19 12:12:11 · 192 阅读 · 0 评论 -
设计模式之禅--9.命令模式
命令模式的定义命令模式是一个高内聚的模式,其定义为:Encapsulate a request as an object,therebyletting you parameterize clients with different requests,queue or log requests,and support undoableoperations.(将一个请求封装成一个对象,从而让你使用...原创 2018-08-29 12:02:54 · 158 阅读 · 0 评论 -
设计模式之禅--10.责任链模式
责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。介绍意图:避免请求发送者与接...转载 2018-09-09 08:36:10 · 181 阅读 · 0 评论 -
设计模式之禅--19.访问者模式
访问者模式在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。介绍意图:主要将数据结构与数据操作分离。主要解决:稳定的数据结构和易变的操作耦合问题。何时使用:需要对一...转载 2018-09-09 08:37:27 · 164 阅读 · 0 评论 -
设计模式之禅--18.备忘录模式
备忘录模式备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。介绍意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。何时使用:很多时候我...转载 2018-09-09 08:37:09 · 208 阅读 · 0 评论 -
设计模式之禅--16.观察者模式
观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。介绍意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用...转载 2018-09-09 08:37:03 · 161 阅读 · 0 评论 -
设计模式之禅--15.组合模式
组合模式组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。介绍...原创 2018-09-09 08:36:58 · 197 阅读 · 0 评论 -
设计模式之禅--14.迭代器模式
迭代器模式迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。介绍意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决:不同的方式来遍历整个整合对象。何时使用:遍历一个聚合对象。如何解决:把...转载 2018-09-09 08:36:53 · 153 阅读 · 0 评论 -
设计模式之禅--13.适配器模式
适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。我们通过下面的实例来演示适配器模式的使...转载 2018-09-09 08:36:50 · 197 阅读 · 0 评论 -
设计模式之禅--12.策略模式
策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况...转载 2018-09-09 08:36:46 · 153 阅读 · 0 评论 -
设计模式之禅--11.装饰模式
装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。介绍意图...转载 2018-09-09 08:36:19 · 166 阅读 · 0 评论 -
two-phase termination模式-- 先收拾房间再睡觉
定义:分两段终止。她是一种先执行完终止处理再终止线程的模式。引例:类的一览表 名字 说明 countupthread 表示技术的线程的类 main 测试行为的类 public class CountupThread extends Thread { // 计数器的值 private long counter = 0; //...翻译 2019-03-10 14:15:01 · 126 阅读 · 0 评论