单例模式(java 实现 Singleton)(一)
来源:互联网 发布:自学网下载软件 编辑:程序博客网 时间:2024/06/05 16:03
网上有很多单例模式的代码,之前也只是草草的知道单例模式怎么写,大概的用途。
今天看书《Java开发实战经典》的时候又看到了单例模式,根据自己的理解说明一下单例模式的实现步骤(过程):
1. ——>对构造方法的封装( private 类名() )
class Singleton{ private Singleton() {//对构造方法的封装 } public void sayHello(){//普通方法 System.out.println("Hello, Singleton"); }}
通过私有化构造方法,外部不可调用构造方法生成本类对象。(所以下一步要解决如何生成本类对象?)
2. ——>在类内部生成本类对象
class Singleton{ Singleton instance = new Singleton();//在内部生成本类对象 private Singleton() { } public void sayHello(){ System.out.println("Hello, Singleton"); }}虽然生成了本类对象,但如何把对象传递给外部使用呢?而外部又不能生成本类的实例获得,所以只能通过把想调用的成员变成类成员,然后通过类名称来直接调用。所以下一步就是将内部生成的对象变成类成员。
3. ——>添加static关键字使内部对象变成类成员
class Singleton static Singleton instance = new Singleton();//将内部对象变成类成员 private Singleton() { } public void sayHello(){ System.out.println("Hello, Singleton"); }}
但是类中的属性必须封装,所以下一步要封装此内部对象。
4. ——>对类成员对象进行封装(private),不允许直接访问类属性
class Singleton private static Singleton instance = new Singleton(); //对类成员对象进行封装 private Singleton() { } public void sayHello(){ System.out.println("Hello, Singleton"); }}
到了这里,就很容易想到下一步应该是生成返回封装属性的方法了,不过因为此处的属性(内部生成的对象)是静态属性(类属性),所以获得这个属性的方法也要是静态方法(可以使用类名直接调用的类方法)。
5. ——>生成返回封装后的静态成员对象的静态方法
class Singleton private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstance(){//用来获得静态属性的静态方法 return instance; } public void sayHello(){ System.out.println("Hello, Singleton"); }}到此一个完整的单例模式就完成了,可以被类名直接调用获得此类对象(e.g. Singleton s1 = Singleton.getInstance() )
即:无论程序怎样运行,Singleton类永远只会有一个实例化对象存在。
PS: 只要将构造方法私有化,就可以控制实例化对象的产生。(核心)
0 0
- 单例模式(java 实现 Singleton)(一)
- Java 实现单例(Singleton)模式
- 【JAVA实现】单例模式(singleton)
- java设计模式(一):Singleton(单例模式)
- java设计模式一(单例模式singleton)
- java设计模式----单例模式Singleton(一)
- [Java设计模式](一)怎样实现Singleton(单例)模式编程
- 单例模式(Singleton)--Java实现
- Java单例模式(Singleton)以及实现
- 实现Singleton模式( 单例模式)
- 单例模式Singleton实现(C++&Java)
- 单例模式(java 实现 Singleton)(二)
- (Singleton)单例模式的Java实现
- (Singleton)单例模式的Java实现
- 单例模式一(Singleton)
- Python Singleton(单例模式)实现
- Python Singleton(单例模式)实现
- JAVA设计模式一---Singleton(单例模式)
- 图灵机器人
- 2015.07.28总结
- linux初学(十一)之linux获取帮助
- OCR字符识别
- 自定义统一title
- 单例模式(java 实现 Singleton)(一)
- ZOJ3885 2015July月赛 E 费用流
- linux初学(十二)之linux用户基础
- Android官网中关于Creating a Bound Service的介绍笔记
- Address already in use: JVM_Bind
- 机房收费系统原型—登陆
- WPF中的柱形图的创建与使用
- web socket实现聊天室
- iOS分分钟搞定C语言 —— 进制