java设计模式3--单例模式(Singleton)
2016-03-22 12:35
405 查看
本文地址:http://www.cnblogs.com/archimedes/p/java-singleton-pattern.html,转载请注明源地址。
单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式是关于怎样设计一个类,并使得该类只有一个实例的成熟模式,该模式的关键是将类的构造方法设置为private权限,并提供一个返回它的唯一实例的类方法。
适用性
1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
参与者
Singleton 定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类操作。 可能负责创建它自己的唯一实例。
模式的结构中只包括一个角色:
•单件类(Singleton)
模式的UML类图
模式的结构的描述与使用
1.单例类(Singleton): Moon.java
2.应用 Application.java
单件类的唯一实例由单件类本身来控制,所以可以很好地控制用户何时访问它。
您还可能感兴趣:
java设计模式系列:
java设计模式2--抽象工厂模式(Abstract
Factory)
java设计模式1--工厂方法模式(Factory
Method)
java设计模式0--设计模式简介
单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
概述
单例模式是关于怎样设计一个类,并使得该类只有一个实例的成熟模式,该模式的关键是将类的构造方法设置为private权限,并提供一个返回它的唯一实例的类方法。适用性
1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
参与者
Singleton 定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类操作。 可能负责创建它自己的唯一实例。
单例模式的结构与使用
模式的结构中只包括一个角色:•单件类(Singleton)
模式的UML类图
实战部分
模式的结构的描述与使用 1.单例类(Singleton): Moon.java
public class Moon { private static Moon uniqueMoon; double radius; double distanceToEarth; private Moon() { uniqueMoon = this; radius = 1738; distanceToEarth = 363300; } public static synchronized Moon getMoon() { if(uniqueMoon == null) { uniqueMoon = new Moon(); } return uniqueMoon; } public String show() { String s = "月亮的半径是" + radius + "km, 距地球是" + distanceToEarth + "km"; return s; } }
2.应用 Application.java
import javax.swing.*; import java.awt.*; public class Application { public static void main(String[] args) { MyFrame f1 = new MyFrame("张三看月亮"); MyFrame f2 = new MyFrame("李四看月亮"); f1.setBounds(10, 10, 360, 150); f2.setBounds(370, 10, 360, 150); f1.validate(); f2.validate(); } } class MyFrame extends JFrame { String str; MyFrame(String title) { setTitle(title); Moon moon = Moon.getMoon(); str = moon.show(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); repaint(); } public void paint(Graphics g) { super.paint(g); g.setFont(new Font("宋体", Font.BOLD, 14)); g.drawString(str, 5, 100); } }
单例模式的优点
单件类的唯一实例由单件类本身来控制,所以可以很好地控制用户何时访问它。您还可能感兴趣:
java设计模式系列:
java设计模式2--抽象工厂模式(Abstract
Factory)
java设计模式1--工厂方法模式(Factory
Method)
java设计模式0--设计模式简介
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序