Java设计模式详解:单例与工厂模式

需积分: 36 0 下载量 63 浏览量 更新于2024-07-16 1 收藏 1.14MB PDF 举报
"Java架构师最新知识要点.pdf" 在Java架构师的学习旅程中,了解和掌握设计模式是非常关键的一部分。本资源中提到了两种重要的设计模式:单例模式和工厂模式。 1. 单例模式(Singleton Pattern) 单例模式是一种创建型设计模式,其主要目标是确保一个类只有一个实例,并提供全局唯一的访问点。在Java中,实现单例模式通常有两种方式:饿汉式和懒汉式。通用代码示例采用的是饿汉式,它在类加载时就完成了初始化,因此是线程安全的。代码如下: ```java public class Singleton { private static final Singleton singleton = new Singleton(); // 防止外部直接创建对象 private Singleton() {} // 获取唯一实例的方法 public static Singleton getSingleton() { return singleton; } // 其他静态方法 public static void doSomething() {} } ``` 在某些特定场景下,如需要生成唯一的序列号、共享访问点或共享数据(如计数器)、创建对象成本过高(如涉及大量IO或数据库操作),以及需要定义静态常量和静态方法的工具类,单例模式都是理想的选择。然而,未加锁的懒汉式单例在多线程环境下可能存在并发问题,可以通过添加`synchronized`关键字来解决,或者使用双重检查锁定(DCL)实现更高效的安全单例。 2. 工厂模式 工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂方法让类的实例化延迟到子类进行。这种模式可以分为简单工厂、工厂方法和抽象工厂三种形式。下面是一个简单的工厂模式示例: ```java // 定义产品接口 public interface Product { void doSomething(); } // 创建具体产品类 public class ConcreteProduct1 implements Product { @Override public void doSomething() { System.out.println("ConcreteProduct1 doing something..."); } } public class ConcreteProduct2 implements Product { @Override public void doSomething() { System.out.println("ConcreteProduct2 doing something..."); } } // 定义工厂接口 public interface Factory { Product createProduct(); } // 实现工厂接口的具体工厂类 public class ConcreteFactory1 implements Factory { @Override public Product createProduct() { return new ConcreteProduct1(); } } public class ConcreteFactory2 implements Factory { @Override public Product createProduct() { return new ConcreteProduct2(); } } ``` 通过工厂模式,我们可以将对象的创建与对象的使用分离,提高代码的可扩展性和可维护性。当需要创建的对象种类繁多,或者需要根据不同的条件动态选择创建哪种类型的对象时,工厂模式尤为适用。 综上,对于Java架构师来说,熟练运用这些设计模式能提升代码质量,简化系统结构,增强软件的灵活性和可维护性。不断学习和实践这些模式,将是提升个人技能的关键步骤。