1、单例模式
饿汉模式(最简单):类加载的时候就创建对象,线程安全
1 2 3 4 5 6 7 8 9 10 | public class Singleton { // 首先,将构造方法 私有化 private Singleton() {}; // 创建私有静态实例,意味着在类加载就会进行创建 private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; } } |
饱汉模式:(双重效验锁)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class Singleton { private Singleton() {} // 和饿汉模式相比,这边不需要先实例化出来,注意这里的 volatile,它是必须的 private static volatile Singleton instance = null ; public static Singleton getInstance() { if (instance == null ) { // 加锁 synchronized (Singleton. class ) { // 这一次判断也是必须的,不然会有并发问题 if (instance == null ) { instance = new Singleton(); } } } return instance; } } |
双重检查,指的是两次检查 instance 是否为 null。
2、工厂模式
1、简单工厂模式
实例化对象不是用new,用工厂方法替代。一个工厂类 XxxFactory,里面有一个静态方法,根据我们不同的参数,返回不同的派生自同一个父类(或实现同一接口)的实例对象。

1 public class FoodFactory { 2 3 public static Food makeFood(String name) { 4 if (name.equals("noodle")) { 5 Food noodle = new LanZhouNoodle(); 6 noodle.addSpicy("more"); 7 return noodle; 8 } else if (name.equals("chicken")) { 9 Food chicken = new HuangMenChicken(); 10 chicken.addCondiment("potato"); 11 return chicken; 12 } else { 13 return null; 14 } 15 } 16 }
2、工厂模式
之所以需要引入工厂模式,是因为我们往往需要使用两个或两个以上的工厂。
3、抽象工厂模式
为了解决不同的工厂生产产品的兼容问题,提出抽象工厂。直接选择一家品牌工厂,品牌工厂会负责生产所有的东西,而且能保证肯定是兼容可用的。
3、原型模式
有一个原型实例,基于这个原型实例产生新的实例,也就是“克隆”了。
Object 类中有一个 clone() 方法,它用于生成一个新的对象,当然,如果我们要调用这个方法,java 要求我们的类必须先实现 Cloneable 接口,此接口没有定义任何方法,但是不这么做的话,在 clone() 的时候,会抛出 CloneNotSupportedException 异常。
protected native Object clone() throws CloneNotSupportedException;
Java 的克隆是浅克隆,碰到对象引用的时候,克隆出来的对象和原对象中的引用将指向同一个对象。通常实现深克隆的方法是将对象进行序列化,然后再进行反序列化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!