设计模式
漫步夕阳下
临渊羡鱼,不如退而结网
展开
-
终极版 单例模式
研究完了volatile关键字,再来深入了解下单例模式,以及单例模式中存在的各种隐患,以及解决方案,最后给出几种不存在隐患的单例模式一. 双重检测单例模式首先我们先来看一下,普通的双重检测的单例模式:public class Singleton{ //类加载时初始化 private static Singleton singleton; //构造方法私有化 privat...原创 2018-08-06 23:27:52 · 576 阅读 · 2 评论 -
代理模式 静态代理与动态代理 绝对通俗易懂
静态代理:假设现在有一个人(person接口),他的名字叫A(class A implement person),小A 40岁了必须要找对象,但是呢自己比较害羞不好意思开口,这样就需要一个媒婆来帮他找对象(MeiPo 代理类),至此就是静态代理模式,下面我们用带来实现下。Person:public interface Person { void findLove();}A:...原创 2019-05-12 09:43:17 · 406 阅读 · 0 评论 -
建造者模式
https://blog.csdn.net/u010102390/article/details/80179754原创 2019-05-07 17:16:34 · 89 阅读 · 0 评论 -
工厂模式与抽象工厂模式
创建型模式共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。简单工厂模式首先简单工厂模式不属于23种设计模式,简单工厂一般分为:普通简单工厂,多方法简单工厂,静态方法简单工厂。下面例子中鼠标,键盘,耳麦为产品,惠普,戴尔为工厂。简单工厂模式简单工厂模式不是 23 种里的一种,简而言之,就是有一个专门生产某个产品的类。比如下图中的鼠标工厂,专业生产鼠标...原创 2019-05-07 20:57:38 · 133 阅读 · 0 评论 -
策略模式
https://www.cnblogs.com/lewis0077/p/5133812.html原创 2019-05-15 14:06:05 · 99 阅读 · 0 评论 -
cglib动态代理源码解析 超级详细
一、CGLIB动态代理实例小A同学想要找女朋友,自己又不好意思,所以需要一个媒婆帮助他找对象,媒婆作为小A的代理,下面我们使用cglib动态代理,来用代码实现下:xiaoA:public class XiaoA { public void findLove(){ System.out.println("我是小A,帮我找个女朋友"); }}meipo:public ...原创 2019-05-13 20:31:20 · 2842 阅读 · 0 评论 -
观察者模式
观察者模式简介观察者模式(又称为发布-订阅模式),是行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。观察者模式结构图观察者模式下有如下角色:subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合中,每个主题都可以有任意数量的观察者,抽象...原创 2019-07-21 15:31:48 · 152 阅读 · 0 评论 -
模板模式
简介在模板模式中,一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。结构图创建一个定义操作的Game抽象类,其中,模板方法设置为final,这样它就不会被重写。Cricket和Football是扩展了Game的实体类,他们重写了抽象类的方法。代码:创建抽象类,它的模板方法设置为fina...原创 2019-07-21 17:05:41 · 96 阅读 · 0 评论 -
装饰器模式与IO
装饰器模式允许像一个现有的对象添加新的功能,同时不改变其结构。这种类型的设计模式属于结构性模式。它是作为现有类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。定义:装饰器模式是在不必改变原类文件和使用继承的情况下,动态扩展...原创 2019-07-22 11:15:49 · 331 阅读 · 0 评论