返回

揭秘创建型设计模式的奥妙:从理论到实践

前端

好的,以下是您要求的文章:

探索设计模式的魅力

设计模式是软件开发的艺术结晶,它们是众多开发者的智慧结晶。通过设计模式,我们可以学习到如何将复杂的软件系统分解成更小的、更易于管理的模块,从而提高代码的可读性、可维护性和可复用性。创建型设计模式是设计模式家族中的重要一员,它们主要用于创建对象。

单例模式:确保对象唯一

单例模式是一种经典的设计模式,它保证一个类仅有一个实例,并提供一个访问它的全局访问点。这种模式常用于创建全局对象,例如数据库连接池、缓存管理器等。单例模式的实现非常简单,主要通过一个if语句来判断是否已经创建过一个实例。如果已创建,则返回该实例;否则,创建一个新的实例。

public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

工厂模式:解耦对象创建

工厂模式是一种创建型设计模式,它为我们提供了一种解耦对象创建的过程。通过使用工厂模式,我们可以将对象的创建逻辑从客户端代码中分离出来,从而提高代码的可读性、可维护性和可扩展性。工厂模式有多种变种,包括简单工厂模式、工厂方法模式和抽象工厂模式。

public interface ShapeFactory {
    Shape createShape(String type);
}

public class CircleFactory implements ShapeFactory {
    @Override
    public Shape createShape(String type) {
        if (type.equals("CIRCLE")) {
            return new Circle();
        } else {
            return null;
        }
    }
}

public class RectangleFactory implements ShapeFactory {
    @Override
    public Shape createShape(String type) {
        if (type.equals("RECTANGLE")) {
            return new Rectangle();
        } else {
            return null;
        }
    }
}

public class ShapeFactoryDemo {
    public static void main(String[] args) {
        ShapeFactory shapeFactory = new CircleFactory();
        Shape shape = shapeFactory.createShape("CIRCLE");
        shape.draw();

        shapeFactory = new RectangleFactory();
        shape = shapeFactory.createShape("RECTANGLE");
        shape.draw();
    }
}

建造者模式:分步构建复杂对象

建造者模式是一种创建型设计模式,它允许我们通过逐步添加组件来构建复杂的对象。这种模式常用于构建具有许多可选组件的对象,例如汽车、电脑等。建造者模式可以帮助我们提高代码的可读性、可维护性和可扩展性。

public class Car {
    private String make;
    private String model;
    private int year;
    private String color;

    private Car(CarBuilder builder) {
        this.make = builder.make;
        this.model = builder.model;
        this.year = builder.year;
        this.color = builder.color;
    }

    public static class CarBuilder {
        private String make;
        private String model;
        private int year;
        private String color;

        public CarBuilder setMake(String make) {
            this.make = make;
            return this;
        }

        public CarBuilder setModel(String model) {
            this.model = model;
            return this;
        }

        public CarBuilder setYear(int year) {
            this.year = year;
            return this;
        }

        public CarBuilder setColor(String color) {
            this.color = color;
            return this;
        }

        public Car build() {
            return new Car(this);
        }
    }

    public static void main(String[] args) {
        Car car = new CarBuilder()
                .setMake("Toyota")
                .setModel("Camry")
                .setYear(2023)
                .setColor("Red")
                .build();

        System.out.println(car);