软件体系结构--单例模式

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

解决问题类型

一个类要求仅有一个唯一的实例,并且提供一个全局的访问点


解决设计思路

将构造方法声明为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.比较容易地改变为允许创建一定数目对象的类


模式的不足

不适用于变化的对象,同一类型的对象在不同的场景需要变化时,单例模式不适用





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值