java设计模式3--单例模式(Singleton)
来源:互联网 发布:全球气候变暖数据 编辑:程序博客网 时间:2024/06/06 04:59
本文地址:http://www.cnblogs.com/archimedes/p/java-singleton-pattern.html,转载请注明源地址。
单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
概述
单例模式是关于怎样设计一个类,并使得该类只有一个实例的成熟模式,该模式的关键是将类的构造方法设置为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--设计模式简介
0 0
- (3)Java设计模式-单例模式(Singleton)
- java设计模式3--单例模式(Singleton)
- JAVA设计模式:单例(Singleton)
- 【Java】单例(singleton)设计模式
- JAVA设计模式:单例(Singleton)
- Java设计模式之单例模式(singleton模式)
- java设计模式之单例模式(Singleton模式)
- Java设计模式之单例模式(singleton模式)
- java设计模式---singleton---单例模式
- Java设计模式----------单例模式(Singleton)
- Java设计模式--单例模式(Singleton)
- Java设计模式 单例模式(Singleton)
- Java设计模式--单例(Singleton)模式
- Java设计模式----单例模式(Singleton)
- Java设计模式 - 单例模式(Singleton)
- java设计模式--Singleton单例模式
- Java设计模式---Singleton单例模式
- Java设计设计模式之单例模式(Singleton)
- 工资计算
- java设计模式2--抽象工厂模式(Abstract Factory)
- ZOJ 1909Square 题解
- 线性筛法求素数
- java中的接口Iterator和Iterable的区别
- java设计模式3--单例模式(Singleton)
- son extends father and override father's variable
- java设计模式4--建造者模式(Builder)
- Errors occurred during the build.
- 蓝桥杯省赛总结
- 第二十七讲--Oracle IMU及Redo Private Strands技术
- java设计模式5--原型模式(Prototype)
- 浏览器禁用缓存的设置
- python一些函数的使用