常用设计模式一_____单例模式

本文介绍了单例模式的概念及其实现方式,强调一个类只能有一个实例,并自行创建和提供该实例。通过示例代码展示了如何实现单例模式,并讨论了在多线程环境下可能遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式既是一个类只允许有一个实例的模式.一个模式是单例模式有以下特征:

1一个类只能有一个实例(显然只有静态类符合此要求)

2必须自行创建这个实例

3必须自行向整个系统提供这个实例.

 

举一个实际例子:每台计算机可以有若干通信端口,而我们的系统会集中管理这些通讯端口,以避免一个通信端口同时被两个请求同时调用.

 

public class officeFactory()

{

    private static officeFactory instance =null;

    privata officeFactory(){}

    public static officeFactory getinstance()

    {

         if(instance == null)

         {

              instance = new officeFactory();

          }

         return instance;

    }

}

 

单例模式在多线程的应用场合下必须小心使用。如果当唯一实例尚未创建时,有两个线程同时调用创建方法,那么它们同时没有检测到唯一实例的存在,从而同时各自创建了一个实例,这样就有两个实例被构造出来,从而违反了单例模式中实例唯一的原则。 解决这个问题的办法是为指示类是否已经实例化的变量提供一个互斥锁(虽然这样会降低效率)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值