
设计模式
Jae_Wang
~
展开
-
设计模式之单例模式
保证一个实例初始化一次且线程安全?单例模式:懒汉:线程不安全; 私有构造函数,单例对象,静态工厂方法。饿汉:线程安全; 类加载就创建,如果创建了不用就会造成资源的浪费。懒汉:线程安全 1. 用synchronized修饰静态工厂方法(同一时间上只允许一个线程来访问的方法,这会带来性能上的开销)。 2. 把synchronized用在方法实现上,判断完后单杜锁,叫双重同步锁单例模...原创 2018-05-22 14:44:40 · 217 阅读 · 0 评论 -
设计模式之迭代器模式
前言 :为什么要引入这种Iterator这种模式? 数组直接用for循环不就好了吗~重要的理由就是可以将遍历与实现分离开来。目的:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 这里的顺序访问即迭代器的种类,可以从后往前遍历,也可以跳跃式遍历。不要只使用具体类来编程、要优先使用抽象类和接口来编程迭代器模式中的角色:迭代器角色(Iterator)...原创 2018-05-31 15:23:17 · 2407 阅读 · 0 评论 -
在图的遍历模式中应用设计模式
今天在写图的算法时,想到如果要实现了求一个节点相邻的节点,该怎么写:稀疏图是邻接表实现的:稠密图是邻接矩阵实现的:问题:得到g这个变量进行操作,保持g变量的私有特性,而又让外部能遍历到这个数据?用模板方法来统一接口,这样外部调用统一的接口就可以访问这个点所有相邻点的集合了。邻接矩阵:// 返回图中一个顶点的所有邻边 public Iterable<Integer> adj(in...原创 2018-06-15 17:32:58 · 311 阅读 · 0 评论 -
使用静态内部类实现延迟加载单例模式
所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在。就像是Java Web中的application,也就是提供了一个全局变量。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类就称为单例类。单例的创建一般分为懒汉式,恶汉式,双重锁检查,枚举等,其中双重锁检查只能在jdk1.5以后才能有效,1.5以前在java对象模型中...原创 2018-07-13 10:43:31 · 871 阅读 · 0 评论 -
Java 利用枚举实现单例模式
Java枚举基本用法枚举的用法比较多,本文主要旨在介绍利用枚举实现单例模式的原理,所以这里也主要介绍一些相关的基础内容。 首先,枚举类似类,一个枚举可以拥有成员变量,成员方法,构造方法。先来看枚举最基本的用法:enum Type{ A,B,C,D;}123创建enum时,编译器会自动为我们生成一个继承自java.lang.Enum的类,我们上面的enum可以简单看作:...转载 2018-07-13 14:55:16 · 360 阅读 · 0 评论