简易的设计模式——单例模式

定义

单例模式是一种保证一个类中只有一个实例对象的软件设计模式。它需要确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

这个还是比较好理解的,一个国家只能有一个国王,不可以出现第二个,所有的人都只能来膜拜这个伟大的国王。

下面直接上代码。

实现

国王类

复制代码
public class King {
    //确保只有一个国王
    private static final King king=new King();
    //保证不再产生新的国王了
    private King(){}
    //这个国家的人通过getInstance()方法拜见他们的国王
    public static King getInstance(){
        return king;
    }
}
复制代码

人民类

public class People {
    //拜见国王
    public void visitKing(){
        System.out.println(King.getInstance());
    }
}

测试类

复制代码
public class SingletonTest {
    public static void main(String args[]){
        for(int i=0;i<10;i++){
            //让10个屁民拜见国王
            People people=new People();
            System.out.println(people);
            people.visitKing();
        }
    }
}
复制代码

输出的结果

复制代码
design.Singleton.People@165e6c89
design.Singleton.King@46c6c084
design.Singleton.People@22893e69
design.Singleton.King@46c6c084
design.Singleton.People@60607135
design.Singleton.King@46c6c084
design.Singleton.People@5ba88001
design.Singleton.King@46c6c084
design.Singleton.People@136bf0aa
design.Singleton.King@46c6c084
design.Singleton.People@138532dc
design.Singleton.King@46c6c084
design.Singleton.People@dce1387
design.Singleton.King@46c6c084
design.Singleton.People@54640b25
design.Singleton.King@46c6c084
design.Singleton.People@7417d56b
design.Singleton.King@46c6c084
design.Singleton.People@48bc9f58
design.Singleton.King@46c6c084
复制代码

这里可以看出来屁民对象一直在变,但是国王一直都是那个国王对象。这就是单例模式了。

优点

· 单例模式只有一个实例,可以节约内存,对于一个对象需要频繁创建、消除时,单例模式无疑是最好的选择。

· 由于只有一个实例对象,可以避免对同一个资源的多重占用。

 

缺点

· 单例模式一般没有接口,不易扩展。

· 单例模式不易于测试。

· 有线程不安全的问题。

 

应用场景

· 要求生成唯一序号的环境

· 创建一个对象非常消耗资源时。

· 需要定义大量静态常量和静态方法时。

· 整个项目中需要一个共享访问点或共享数据时。

posted @   whthomas  阅读(290)  评论(1编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示