工厂模式与单例模式

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

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
单例模式示例
单例模式示例

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

相关推荐
gis收藏家8 分钟前
利用 SAM2 模型探测卫星图像中的农田边界
开发语言·python
齐雅彤19 分钟前
Bash语言的并发编程
开发语言·后端·golang
AitTech27 分钟前
C#性能优化技巧:利用Lazy<T>实现集合元素的延迟加载
开发语言·windows·c#
翻晒时光28 分钟前
深入解析Java集合框架:春招面试要点
java·开发语言·面试
峰子201234 分钟前
B站评论系统的多级存储架构
开发语言·数据库·分布式·后端·golang·tidb
Jane - UTS 数据传输系统43 分钟前
VUE+ Element-plus , el-tree 修改默认左侧三角图标,并使没有子级的那一项不展示图标
javascript·vue.js·elementui
Channing Lewis1 小时前
python如何使得pdf加水印后的大小尽可能小
开发语言·python·pdf
_.Switch1 小时前
Python Web开发:使用FastAPI构建视频流媒体平台
开发语言·前端·python·微服务·架构·fastapi·媒体
yyytucj2 小时前
python--列表list切分(超详细)
linux·开发语言·python
肖田变强不变秃2 小时前
C++实现有限元计算 矩阵装配Assembly类
开发语言·c++·矩阵·有限元·ansys