设计模式
文章平均质量分 71
金大大jhz
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式学习-单例模式
单例模式:作为最常使用的设计模式之一,单例模式可以用于保证单例类对象的唯一性。在某些场景,尤其是多线程场景下,实例的唯一性尤其重要。常见的单例模式可以分为两类:懒汉和恶汉。懒汉式:在类加载时不会初始化恶汉式:在类加载时便初始化,这种方式会降低类加载的速度,但是会提高获取对象时的速度。常见的懒汉式单例模式:懒汉&非线程安全:public class SingletonPattern1 { ...原创 2018-07-14 16:47:07 · 188 阅读 · 1 评论 -
设计模式学习--模板方法模式
前言 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。1、模板方法模式1.1 用途定义一个模板结构,将具体内容延迟到子类去实现,在不改变模板结构的前提下在子类中重新定义模板中的内容。1.2 UML1.3 示例...原创 2018-11-11 22:35:14 · 186 阅读 · 0 评论 -
设计模式学习--策略模式
前言使用策略模式可以代替多重if-else和switch语句,让代码维护变得更加简单,乍一看跟工厂模式一模一样,下面是个简单的例子。策略模式包含以下三种角色:环境(Context)角色:持有一个Strategy的引用 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为示例抽象策略...原创 2018-10-31 20:51:57 · 224 阅读 · 1 评论 -
职责链模式以及在Netty中的应用
前言 职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。类图如下: 职责链模式中主要包括以下两个角色:抽象处理者(handler)和具体处理者(concreteHandler),抽象处理者中声明处理...原创 2018-10-20 00:20:40 · 329 阅读 · 0 评论 -
设计模式学习-状态模式
前言我们在日常开发中经常会面临if-else的选择,比如我刚刚登录csdn,想写一篇关于状态模式的博客,发现cookie又没有保存我的登录信息(可能是过期了),当我点击博客时,会先提示需要登录,这里我们可以看到,我们用户的行为是由当前是否登录这个状态来决定的,这就是典型的状态模式情景。在逻辑判断较多,分支较为复杂的场景,状态模式的合理使用能让我们少写很多if-else。UML如图,...原创 2018-10-09 22:26:13 · 339 阅读 · 0 评论 -
Reactor模式学习总结
前言 之前在JAVA IO中已经提到过reactor模式,reactor可以说是nio的核心,也是netty之所以高效的原因之一,今天我们来总结下reactor模式相关的知识点。在开始学习之前,我们需要了解常用IO模型的两种体系结构:1、thread-based architecture(基于线程):如BIO,一个客户端请求(连接)对应一个独立线程2、event-driven...原创 2018-10-14 14:24:26 · 522 阅读 · 0 评论 -
设计模式学习-适配器模式
前言适配器在我们的生活中应用的十分广泛,比如我们的笔记本电源,如果不用适配器,那我们的笔记本将直接接入220V的交流电,出国的朋友肯定对三个插孔的转换头比较熟悉,这也是一种适配器。顾名思义,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中,感觉又和代理模式有点像了,...原创 2018-09-02 22:01:44 · 1168 阅读 · 0 评论 -
设计模式学习-装饰器模式
装饰器模式定义装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装(节选自Runoob.com)。我们可以尝试从字面上去理解,通过设计一个装饰类对原有类进行梳妆打扮,使其更加“漂亮”,初从定义了解装饰器模式,让我买下了一个疑问,怎么感觉跟代理模式这么像呢?接下来,我们就带着疑问来学...原创 2018-08-16 23:25:58 · 235 阅读 · 0 评论 -
设计模式学习-代理模式
1、代理模式 顾名思义,代理模式在面向对象程序中类似于我们生活中代理机构的工作模式,比如我想在公司附近租房,但是初来乍到,对环境和行情的不熟悉,而且入职时间紧迫,没有时间和精力去一个小区一个小区的去了解房源,联系房东,这时候,我们就可以找链家(代理机构)来帮我们找房子,我们要做的就是在他选出来的房源中挑选中意的即可。如图所示:而代理模式在程序世界中也能起到类似的作用,需...原创 2018-08-09 23:35:42 · 177 阅读 · 0 评论 -
设计模式学习-用匿名内部类实现工厂模式
最近看书看到匿名内部类的相关内容,发现采用匿名内部类确实能使工厂模式的设计变得更为合理。public interface Shape { public void draw();}public interface ShpaeFactory { public Shape getShape();}public class Circle implements Sh...原创 2018-07-21 22:28:00 · 537 阅读 · 2 评论 -
设计模式学习-工厂模式
工厂模式:常用的工厂模式包括三种--简单工厂、普通工厂以及抽象工厂模式。1、简单工厂模式:package com.demo.simplefactory;//接口类public interface Shape { public void draw();}package com.demo.simplefactory;public class Circle implements Sh...原创 2018-07-15 15:27:02 · 180 阅读 · 0 评论 -
不用饿汉和锁实现线程安全的单例模式
前言面试官不让用饿汉和锁,要求实现线程安全的单例,记录下使用原子类的解法;代码SingletonWithoutLock.javaimport java.util.concurrent.atomic.AtomicReference;/** * @author jhz * @date 19-8-10 下午11:55 */public class SingletonWit...原创 2019-08-11 00:26:52 · 338 阅读 · 0 评论
分享