工厂模式与单例模式

以下是一个简单的示例代码,演示了工厂模式和单例模式的用法:

java 复制代码
// 定义产品接口
interface Product {
    void use();
}

// 具体产品1
class ConcreteProduct1 implements Product {
    public void use() {
        System.out.println("使用具体产品1");
    }
}

// 具体产品2
class ConcreteProduct2 implements Product {
    public void use() {
        System.out.println("使用具体产品2");
    }
}

// 工厂类
class Factory {
    // 根据类型创建产品对象
    public static Product createProduct(String type) {
        if (type.equals("1")) {
            return new ConcreteProduct1();
        } else if (type.equals("2")) {
            return new ConcreteProduct2();
        } else {
            return null;
        }
    }
}

// 单例类
class Singleton {
    private static Singleton instance = null;
    // 私有构造函数
    private Singleton() {}
    // 获取实例的方法
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
    public void showMessage() {
        System.out.println("单例模式示例");
    }
}

// 主程序
public class Demo {
    public static void main(String[] args) {
        // 使用工厂模式创建产品对象
        Product product1 = Factory.createProduct("1");
        product1.use();

        Product product2 = Factory.createProduct("2");
        product2.use();

        // 使用单例模式
        Singleton singleton1 = Singleton.getInstance();
        singleton1.showMessage();

        Singleton singleton2 = Singleton.getInstance();
        singleton2.showMessage();
    }
}

运行结果:

复制代码
使用具体产品1
使用具体产品2
单例模式示例
单例模式示例

以上示例中,使用工厂模式创建了具体产品对象,并调用了它们的方法。同时使用了单例模式创建了一个实例,并多次调用了该实例的方法,保证了获取的实例是同一个。

相关推荐
OKkankan几秒前
模板的进阶
开发语言·数据结构·c++·算法
鼓掌MVP5 分钟前
Rust Web实战:构建高性能并发工具的艺术
开发语言·前端·rust·异步编程·内存安全·actix-web·高性能web服务
盒马盒马7 分钟前
Rust:函数与控制流
开发语言·网络·rust
豐儀麟阁贵12 分钟前
5.4静态变量和静态方法
java·开发语言
Mintopia14 分钟前
🌌 元宇宙 Web 场景中,AIGC 驱动的虚拟内容生成技术
前端·javascript·aigc
枫叶丹418 分钟前
【Qt开发】容器类控件(二)-> QTabWidget
开发语言·qt
鹏多多25 分钟前
react-konva实战指南:Canvas高性能+易维护的组件化图形开发实现教程
前端·javascript·react.js
草莓熊Lotso43 分钟前
模板进阶:从非类型参数到分离编译,吃透 C++ 泛型编程的核心逻辑
linux·服务器·开发语言·c++·人工智能·笔记·后端
草莓熊Lotso1 小时前
《算法闯关指南:优选算法--前缀和》--25.【模板】前缀和,26.【模板】二维前缀和
开发语言·c++·算法
浔川python社1 小时前
C++ 实际应用系列(第六部分):并发系统的性能优化与工程实践(完)
开发语言·c++·性能优化