设计模式
张之海
硕士毕业于东北大学,现就职于北京某猫头鹰公司,大数据工程师职位。
展开
-
《设计模式》——1 单例模式
《设计模式》,emmm~老朋友了鸭,一个在本科阶段学习的课程,平常就用到其中几个而已,现在研究生期间面临找实习了,还是再全面地复习一下吧。为了加深理解,本文用Python和Java两种语言进行实现。 设计模式总体包括3大类、2小类,3大类是: 创建型,共五种:工厂方法、抽象工厂、单例、建造者、原型。 结构型,共七种:适配器、装饰器、代理、外观、桥接、组合、享元。 行为型,共十一种:策略、模板方...原创 2019-05-01 12:25:33 · 156 阅读 · 0 评论 -
《设计模式》—— 2 工厂模式
特别说明:本篇的简单工厂和工厂方法部分均参考自 工厂设计模式(三种)_简书。 所以复制过来的文字仅作为笔记,本文的重点是每一级目录后的个人总结。 1 什么是工厂设计模式 工厂设计模式,顾名思义,就是用来生产对象的,在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则...原创 2019-05-03 17:06:19 · 157 阅读 · 0 评论 -
《设计模式》之 3 装饰者模式
注意:本文内容大部分参考自文章设计模式详解——装饰者模式_简书 1 装饰者模式介绍 意图:向一个现有的对象添加新的功能,同时又不改变其结构。 装饰者模式的类图如下: 在装饰模式中的角色有: 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。 具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类。 装饰(Decorator)角色:持有...转载 2019-05-03 20:43:49 · 227 阅读 · 0 评论 -
volatile与单例模式
参考文献:volatile关键字的作用、原理 1 作用 保持内存可见性:所有线程都能看到共享数据的最新值。 防止指令重排序。 2 实现 2.1 怎么实现内存可见性 (1)读取前先从内存刷新最新的值。 (2)写入后立即同步回内存中。 2.2 怎么防止指令重排 什么是指令重排:基于偏序关系的Happens-Before内存模型中,指令重排技术大大提高了程序执行效率。 在指令序列中 插入内存屏障来禁...原创 2019-09-07 10:20:53 · 939 阅读 · 0 评论