java设计模式之单例设计模式和多例设计模式
单例设计模式:构造方法私有化,在类的内部定义static属性和方法,利用static方法来取得本类的实例化对象;无论外部产生多少个实例化对象,本质上只有一个实例化对象
饿汉式单例设计
class Singleton{ private static final Singleton INSTANCE = new Singleton();//产生一个实例化对象 private Singleton(){}//封装构造方法 public static Singleton getInstance(){ return INSTANCE;//取得实例化对象 } public void print(){ System.out.print("hello word"); } } public class Test{ public static void main(String args[]){ Singleton s = Singleton.getInstance();//无论调用多少次getInstance()方法,产生的实例化对象都是相同的 s.print(); } }
懒汉式设计模式
class Singleton{ private static final Singleton INSTANCE;//定义一个未实例化的本类对象 private Singleton(){}//封装构造方法 public static Singleton getInstance(){ if(INSTANCE == null){ INSTANCE = new Singleton(); } return INSTANCE;//取得实例化对象 } public void print(){ System.out.print("hello word"); } } public class Test{ public static void main(String args[]){ Singleton s = Singleton.getInstance();//无论调用多少次getInstance()方法,产生的实例化对象都是相同的 s.print(); } }
多例设计模式:构造方法私有化,产生特定个数对象
class Sex{ private String sex; private static final Sex MAN = new Sex("男"); private static final Sex WOMAN = new Sex("女"); private Sex(String sex){ this.sex = sex; } public static Sex getInstance(int ch){ switch(ch){ case 1: return MAN; case 2: return WOMAN; default: return null; } } public String toString(){ return sex; } } public class Test{ public static void main(String args[]){ Sex s = Sex.getInstance(1); System.out.println(s); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?