Java设计模式

1. 概述

设计模式是一套被广泛接受和使用的面向对象编程解决方案,它提供了一种可重用的解决方案,用于常见的软件设计问题。在Java中,有23种经典的设计模式,它们被分为三类:创建型模式、结构型模式和行为型模式。本文将介绍Java的设计模式及其使用。

2. 流程

下面是学习Java设计模式的流程:

步骤 描述
1 了解设计模式的概念和重要性
2 学习每种设计模式的原理和使用场景
3 实践使用设计模式
4 总结和复习设计模式的使用

3. 学习每种设计模式的步骤和代码示例

3.1 创建型模式

3.1.1 单例模式

步骤:

  1. 创建一个私有的静态实例变量来保存单例对象。
  2. 创建一个私有的构造方法,防止外部实例化该类。
  3. 提供一个公共的静态方法来获取单例对象。
  4. 在公共静态方法中,使用双重检查锁定来确保只有一个线程可以实例化对象。

示例代码:

public class Singleton {
    private static volatile Singleton instance;
    
    private Singleton() {
        // 私有构造方法
    }
    
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized(Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
3.1.2 工厂模式

步骤:

  1. 创建一个工厂接口,定义产品的创建方法。
  2. 创建多个产品类,实现工厂接口。
  3. 创建一个工厂实现类,根据不同的条件返回不同的产品实例。

示例代码:

public interface ShapeFactory {
    Shape createShape();
}

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

public class RectangleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Rectangle();
    }
}
3.1.3 抽象工厂模式

步骤:

  1. 创建一个抽象工厂接口,定义多个产品族的创建方法。
  2. 创建多个产品族接口,定义具体产品的创建方法。
  3. 创建多个具体产品族类,实现产品族接口。
  4. 创建一个抽象工厂实现类,根据不同的条件返回不同的产品族实例。

示例代码:

public interface AbstractFactory {
    Shape createShape();
    Color createColor();
}

public interface ShapeFactory {
    Shape createShape();
}

public interface ColorFactory {
    Color createColor();
}

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

public class RedColorFactory implements ColorFactory {
    @Override
    public Color createColor() {
        return new RedColor();
    }
}

public class RedCircleFactory implements AbstractFactory {
    @Override
    public Shape createShape() {
        return new Circle();
    }

    @Override
    public Color createColor() {
        return new RedColor();
    }
}
3.1.4 建造者模式

步骤:

  1. 创建一个产品类,定义多个属性和对应的设置方法。
  2. 创建一个抽象建造者类,定义产品的创建和组装方法。
  3. 创建多个具体建造者类,实现抽象建造者类,根据不同的步骤和顺序构建产品。
  4. 创建一个指挥者类,负责调用具体建造者的方法来构建产品。

示例代码:

public class Product {
    private String part1;
    private String part2;

    public void setPart1(String part1) {
        this.part1 = part1;
    }

    public void setPart2(String part2) {
        this.part2 = part2;
    }
}

public abstract class Builder {
    protected Product product = new Product();

    public abstract