关键词:
思想:
1.为了避免过多创建类的对象,禁止此类以外创建对象(构造方法私有化)
2.为了类可以被使用就必须创建此类对象,只好在本类中,创建对象
3.在此类中创建的对象,怎么给此类以外的使用,所已此类必须提供返回对象的一个方法
1.将构造函数私有化
2.在类中创建对象
3.提供一个方法用于获取此类对象
class Single { /** 方式一、饿汉式 开发建议使用 */ //1.将构造函数私有化 private Single(){} //2.在类中创建对象 private static Single s=new Single(); //3.提供一个方法用于获取此类对象 public static Single getInstance() { return s; } /** 方式二、懒汉式 */ private Single(){} private static Single s=null; //线程不安全 public static Single getInstance() { if(s==null) s=new Single(); return s; } //加同步(效率低) public static synchronized Single getInstance() { if(s==null) s=new Single(); return s; } //双重判断 public static Single getInstance() { if(s==null) { synchronized(Single.class) { if(s==null) s=new Single(); } } return s; } private int num; public int getNum() { return num; } public void setNum(int num) { this.num=num; } } class SingleDemo { public static void main (String[] args) { Single s1=Single.getInstance(); Single s2=Single.getInstance(); s1.setNum(23); System.out.println(s2.getNum()); } }
23种设计模式学习之单例模式
用内部类来维护单例的实现publicclassSingleton{ //私有构造方法,防止被实例化privateSingleton(){} //用一个内部类来维护单例privatestaticclassSingletonFactory{privatestaticSingletonsingleton=newSingleton();} //获取实例publicstaticSingletonget 查看详情
spring源码学习之设计模式单例模式
众所周知,单例模式分为饿汉式和懒汉式,昨天在看了《spring5核心原理与30个类手写实战》之后才知道饿汉式有很多种写法,分别适用于不同场景,避免反射,线程不安全问题。下面就各种场景、采用的方式及其优缺点介绍。饿... 查看详情
python学习之八设计模式和异常(代码片段)
环境 虚拟机:VMware10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6一、设计模式1、单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式... 查看详情
java设计模式学习之工厂模式
在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。Java设计模式之工厂模式简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之所以... 查看详情
一起学java(三十)-----单例模式
不积跬步,无以至千里;不积小流,无以成江海。 Java语言基础 Java的单例模式 查看详情
java学习之dao设计模式
DAO设计模式是一个javaEE里的设计模式,DAO是DataAccessObject数据访问接口。 一个典型的DAO实现有三个组件: 1、一个DAO接口 2、一个DAO接口的具体类; 3、数据传递对象(DTO)或者叫值对象(VO)或者... 查看详情
java集合类学习之vector
package com.fish.list;import java.util.Enumeration;import java.util.Vector;/*集合 的体系:------------| Collection 单例集合的根接口----------------| List 如果是实现了List接口的集合类,具备的 查看详情
java集合类学习之hashset
package com.fish.set;import java.util.HashSet;import java.util.Set;/*集合 的体系:------------| Collection 单例集合的根接口----------------| List 如果是实现了List接口的集合类,具备的特点 查看详情
java设计模式--工厂模式学习之使用…
如果不使用工厂模式来实现我们的例子,也许代码会减少很多--只需要实现已有的车,不使用多态。但是在可维护性上,可扩展性上是非常差的(你可以想象一下,添加一辆车后要牵动的类)。因此为了... 查看详情
对比java学kotlin单例模式(代码片段)
文章目录Java实现Kotlin实现参考文档Java实现先来回忆一下Java代码实现单例的一种方式:publicclassSingletonprivatestaticSingletoninstance=null;privateSingleton()publicstaticSingletongetInstance()if(instance==null)synch 查看详情
编程学习之简单工厂模式与策略模式
很久之前在学习c++的时候就听到老师说写代码要考虑重构,架构,在此期间学习到了一种简单工厂模式。何为简单工厂模式呢?简单工厂模式又叫静态工厂方法模式(StaticFactoryMethodPattern),是通过专门定义一个类来负责创... 查看详情
javase学习之枚举
JavaSE枚举类枚举类介绍类的对象只有有限个、确定的。我们称此类为枚举类线程状态:创建、就绪、运行、堵塞、死亡当需要定义一组常量时,强烈建议使用枚举类如果枚举类中只有一个对象,则可以作为单例模式的实现方式枚... 查看详情
laravel源码学习之container
Ioc模式Ioc(InversionofControl)模式又称依赖注入(DependencyInjection)模式。控制反转就是将组件之间的依赖关系从程序的内部转移到程序外部,而依赖注入是指组件的依赖关系通过外部参数或其他形式注入,两种说法从本质上是一样的。... 查看详情
java线程学习之master-worker模式(代码片段)
Masker-Worker的核心思想是有两类进程(Masker进程和Worker进程)协作完成任务。Masker进程负责接收和分配任务,Worker负责处理子任务,当各个Worker子进程完成任务后会将结果返回给Masker,由Masker做归纳和总结。其好处在于... 查看详情
autofac学习之三种生命周期:instanceperlifetimescopesingleinstanceinstanceperdependency转载
InstancePerLifetimeScope:同一个Lifetime生成的对象是同一个实例SingleInstance:单例模式,每次调用,都会使用同一个实例化的对象;每次都用同一个对象;InstancePerDependency:默认模式,每次调用,都会重新实例化对象;每次请求都创... 查看详情
设计模式学习之:装饰器模式(代码片段)
最近在总结学习JavaI/O相关知识点,I/O应用的场景比较多,不仅存在各种I/O源端和想要与之通信的接收端(文件、控制台、网络链接等),而且还需要支持多种不同方式的通信(顺序、随机存取、缓冲、二进制、按字符、按行、按字... 查看详情
设计模式学习之抽象工厂模式
抽象工厂模式定义:Provideaninterfaceforcreatingfamiliesofrelatedordependentobjectswithoutspecifyingtheirconcreteclasses.   查看详情
23种设计模式学习之桥接模式
接口publicinterfaceSource{voidmethod1();} 实现一publicclassSourceImpimplementsSource{@Overridepublicvoidmethod1(){System.out.println("1111111");}} 实现二publicclassSourceImplimplementsSource{@Overri 查看详情