Java 中工厂设计模式,请用代码具体举例

工厂设计模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需将具体的实例化逻辑暴露给客户端代码。以下是一个简单的 Java 示例:


// 定义产品接口
interface Product {
    void operation();
}

// 具体产品类1
class ConcreteProduct1 implements Product {
    public void operation() {
        System.out.println("ConcreteProduct1: Operation");
    }
}

// 具体产品类2
class ConcreteProduct2 implements Product {
    public void operation() {
        System.out.println("ConcreteProduct2: Operation");
    }
}

// 工厂接口
interface Factory {
    Product createProduct();
}

// 具体工厂类1
class ConcreteFactory1 implements Factory {
    public Product createProduct() {
        return new ConcreteProduct1();
    }
}

// 具体工厂类2
class ConcreteFactory2 implements Factory {
    public Product createProduct() {
        return new ConcreteProduct2();
    }
}

// 示例
public class Main {
    public static void main(String[] args) {
        // 使用工厂1创建产品1
        Factory factory1 = new ConcreteFactory1();
        Product product1 = factory1.createProduct();
        product1.operation();

        // 使用工厂2创建产品2
        Factory factory2 = new ConcreteFactory2();
        Product product2 = factory2.createProduct();
        product2.operation();
    }
}

在这个例子中,Product 接口定义了产品的操作方法 operation(),ConcreteProduct1 和 ConcreteProduct2 是具体的产品类实现了该接口。Factory 接口定义了创建产品的方法 createProduct(),ConcreteFactory1 和 ConcreteFactory2 是具体的工厂类实现了该接口,分别用于创建 ConcreteProduct1 和 ConcreteProduct2。
在 Main 类中,我们使用具体的工厂类来创建具体的产品,并调用其操作方法。这样,客户端代码只需要知道如何使用工厂来创建产品,而无需关心具体产品的实例化细节。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,可以将对象的创建过程与使用过程分离开来。 工厂模式的主要思想是通过一个工厂方法来实现对象的创建,而不是直接在代码通过new来创建对象。这样做的好处是可以减少代码的耦合度,同时增强代码的可扩展性和可维护性。 举个例子,假设有一个形状接口Shape和三个实现类Circle、Rectangle、Square,我们可以定义一个工厂类ShapeFactory来生成Shape的实现类。 ``` interface Shape { void draw(); } class Circle implements Shape { public void draw() { System.out.println("Circle.draw()"); } } class Rectangle implements Shape { public void draw() { System.out.println("Rectangle.draw()"); } } class Square implements Shape { public void draw() { System.out.println("Square.draw()"); } } class ShapeFactory { public Shape getShape(String shapeType) { if (shapeType == null) { return null; } if (shapeType.equalsIgnoreCase("CIRCLE")) { return new Circle(); } else if (shapeType.equalsIgnoreCase("RECTANGLE")) { return new Rectangle(); } else if (shapeType.equalsIgnoreCase("SQUARE")) { return new Square(); } return null; } } ``` 然后我们可以通过以下代码来生成不同的形状对象: ``` ShapeFactory shapeFactory = new ShapeFactory(); Shape circle = shapeFactory.getShape("CIRCLE"); circle.draw(); // output: Circle.draw() Shape rectangle = shapeFactory.getShape("RECTANGLE"); rectangle.draw(); // output: Rectangle.draw() Shape square = shapeFactory.getShape("SQUARE"); square.draw(); // output: Square.draw() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值