设计模式-单例模式(程序中的计划生育)

简介: 设计模式-单例模式(程序中的计划生育)

故事背景

在form窗体中会有一些这种情况,这种情况就是我们没有限制被实例化的窗体原因,如果我们只是把窗体的条件修改成为 form==null,

form==null是把该窗体对象设置成为空的,但是该form还仍然存在在内存地址里。form.IsDisposed==true是把该窗体是否为释放过的资源的属性设置为true,但form没有变化。如果你是想把form完全释放,建议使用form.Dispose()方法释放。



所以我们在限制条件时加上一个判断if (form == null || form.IsDisposed)就行了。

那么在类中的单例模式其实也加上了一个限制,使其在被实例化时只能通过自己实例化自己就行了。


单例模式


保证一个类仅有一个实例,并提供一个访问它的全局访问点。

那么直接通过代码来体现就能更好理解了

class Singleton
    {
        private static Singleton instacne;
        //重写类的构造方法使其只能自己使用,外界就无法利用new来创建此类的实例化了
        private Singleton()
        {
        }
        //本类唯一全局访问点
        public static Singleton GetInstance()
        {
            //判断此类是否已被实例化
            if (instacne ==null)
            {
                instacne = new Singleton();
            }
            return instacne;
        }
    }

客户端代码

  static void Main(string[] args)
        {
            Singleton s1 = Singleton.GetInstance();
            Singleton s2 = Singleton.GetInstance();
            if (s1==s2)
            {
                Console.WriteLine("两个对象是相同的实例");
            }
            Console.Read();
        }

对比下图和客户端代码,可以看到无法此类无法被实例化

这是运行以后的结果,可以看出s1与s2是相同的

相关文章
|
6天前
|
设计模式 存储 SQL
PHP中的设计模式:单例模式的探索
在PHP开发中,单例模式是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。本文将通过一个简单的例子,逐步引导你理解如何在PHP中实现和利用单例模式,以及它在实际项目中的应用价值。
|
2月前
|
设计模式 缓存 安全
Java设计模式的单例模式应用场景
Java设计模式的单例模式应用场景
32 4
|
2月前
|
设计模式 SQL 安全
【设计模式】第二篇:单例模式的几种实现And反射对其的破坏
一个普通实例化,一个反射实例化 但是我们如果通过反射的方式进行实例化类,会有什么问题呢? public static void main(String[] args) throws Exception { Lazy1 lazy1 = getLazy1();
27 5
|
13天前
|
设计模式 安全 程序员
C#设计模式之单例模式
C#设计模式之单例模式
27 3
|
7天前
|
设计模式 存储 数据库连接
Python设计模式:巧用元类创建单例模式!
Python设计模式:巧用元类创建单例模式!
16 0
|
11天前
|
设计模式 安全 测试技术
[设计模式]创建型模式-单例模式
[设计模式]创建型模式-单例模式
|
1月前
|
设计模式 安全 C++
C++一分钟之-C++中的设计模式:单例模式
【7月更文挑战第13天】单例模式确保类只有一个实例,提供全局访问。C++中的实现涉及线程安全和生命周期管理。基础实现使用静态成员,但在多线程环境下可能导致多个实例。为解决此问题,采用双重检查锁定和`std::mutex`保证安全。使用`std::unique_ptr`管理生命周期,防止析构异常和内存泄漏。理解和正确应用单例模式能提升软件的效率与可维护性。
24 2
|
1月前
|
设计模式 安全 Java
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
54 1
|
1月前
|
设计模式 安全 Java
技术成神之路:设计模式(一)单例模式
【7月更文挑战第3天】技术成神之路:设计模式(一)单例模式
25 1
|
1月前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 单例模式
js设计模式【详解】—— 单例模式
15 1