随笔分类 - 设计模式
摘要:装饰模式的定义: 装饰模式是用来替代继承的一种设计模式。它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。降低了系统的耦合,可以动态的增加或者删除对象的职责。 装饰模式的结构 装饰模式主要包含以下角色。 抽象构件(Component)角色:定义一个抽象接口
阅读全文
摘要:什么是代理模式 简单说即是在不改变源码的情况下,实现对目标对象的功能扩展。 举个例子:比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing() ,假如你希望,通过你的某种方式生产出来的歌手对象,在唱歌前后还要想观众问好和答谢,也即对目标对象Singer的sing方法进行功能扩展。但是往往
阅读全文
摘要:单例模式的定义: :指一个类只有一个实例 单例模式的具体实现 需要: (1)私有的构造方法,使其不能在类的外部通过new关键字实例化该类对象。 (2)私有的静态实例化对象,并且将其封装为private static类型。 (3)对外提供一个公共的访问方法,并返回该实例对象。 单例模式的两种实现: 第
阅读全文
摘要:前言 单例模式在平时算比较常见,有关java单例模式的写法有很多种,在这里分析一种比较好的写法。 代码 代码解释: 第一个注意点:使用私有的构造函数,确保正常情况下该类不能被外部初始化(非正常情况比如通过反射初始化,一般使用反射之后单例模式也就失去效果了)。 第二个注意点:getInstance方法
阅读全文
摘要:static 那天我朋友问了我个问题,static和单例模式有什么区别,所以我觉得static可以讲一下 他的问题是,把对象弄成static是不是就不变了 显然,这是还没弄清楚引用和对象的区别 其实存放在静态区中的是引用,而不是对象。而对象是存放在堆中的。如果有这样一句话 意思就是book这个引用,
阅读全文
摘要:一、背景 最近在学习设计模式,在看到单例模式的时候,我一开始以为直接很了解单例模式了,实现起来也很简单,但是实际上单例模式有着好几个变种,并且多线程中涉及到线程安全问题,那么本文我们就来好好聊聊单例模式,说一下经典三种实现方式:饿汉式、懒汉式、登记式。并且解决掉多线程中可能出现的线程安全问题。 二、
阅读全文