解决问题类型
一个类要求仅有一个唯一的实例,并且提供一个全局的访问点
解决设计思路
将构造方法声明为private类型,如果构造方法为public类型,则可以永远使用该构造方法创建不同的对象
在类中提供一个可以获得实例的方法,该方法必须是静态方法,否则无法调用,同时确保无论调用该方法多少次,始终返回同一个对象
具体待解决的问题UML设计
创建一个校长类对象,并保证仅有一个校长类President被创建
UML设计
核心代码
public class President {
private static President instance= null;
String name = null;
private President(String name){
this.name = name;
}
public static President getInstance(String name){
if(instance == null && !name.equals(null)){
instance = new President(name);
JOptionPane.showMessageDialog(null, "创建现任校长成功!现任校长为"+instance.name);
return instance;
}
else{
JOptionPane.showMessageDialog(null, "您已经创建了现任校长,不能再创建第二次!现任校长为"+instance.name);
return instance;
}
}
}模式的优点
1.严格控制客户程序访问其唯一的实例
2.单例类可以带有一些子类,每个子类都是单例类
3.比较容易地改变为允许创建一定数目对象的类
模式的不足
不适用于变化的对象,同一类型的对象在不同的场景需要变化时,单例模式不适用

本文探讨了单例模式的用途,通过确保一个类只有一个实例并提供全局访问点来解决问题。介绍了设计思路,包括将构造函数设为私有以及提供静态获取实例的方法。UML设计展示了具体的应用场景,如创建唯一的校长类对象。文章还列出了单例模式的优势,如控制实例访问、允许子类化以及灵活性,同时也指出其不足,即难以适应需要多个实例的情况。
1621

被折叠的 条评论
为什么被折叠?



