工厂方法模式

简单工厂是需要通过一些条件(switch判断),然后由工厂来返回具体的实例

工厂方法模式是直接创建出需要的实例,即通过继承父类的方式,来实现扩展,需要通过访问具体的工厂来获得实例,也就是需要记住所有的工厂。

考虑一个简单的图形绘制应用程序。你想要一个能够绘制不同形状(圆形、正方形、三角形)的功能。

我们可以使用工厂方法模式来实现这个场景。首先,定义一个抽象的 Shape 接口,然后创建具体的形状类实现这个接口。接着,定义一个抽象的 ShapeFactory 类来作为工厂,让具体的形状工厂类来创建对应的形状对象。

Shape 接口:

// Shape 接口
public interface Shape {
    void draw();
}

具体形状实现类:

// Circle 类
public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}

// Square 类
public class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制正方形");
    }
}

// Triangle 类
public class Triangle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制三角形");
    }
}

抽象工厂类

// ShapeFactory 抽象类
public abstract class ShapeFactory {
    public abstract Shape createShape();
}

具体工厂类

// CircleFactory 类
public class CircleFactory extends ShapeFactory {
    @Override
    public Shape createShape() {
        return new Circle();
    }
}

// SquareFactory 类
public class SquareFactory extends ShapeFactory {
    @Override
    public Shape createShape() {
        return new Square();
    }
}

// TriangleFactory 类
public class TriangleFactory extends ShapeFactory {
    @Override
    public Shape createShape() {
        return new Triangle();
    }
}

使用示例

public class Main {
    public static void main(String[] args) {
        ShapeFactory circleFactory = new CircleFactory();
        Shape circle = circleFactory.createShape();
        circle.draw();

        ShapeFactory squareFactory = new SquareFactory();
        Shape square = squareFactory.createShape();
        square.draw();

        ShapeFactory triangleFactory = new TriangleFactory();
        Shape triangle = triangleFactory.createShape();
        triangle.draw();
    }
}

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值