设计模式-单例模式、工厂模式

设计模式-单例模式、工厂模式

源代码下载请查看 design-pattern模块

单例模式

保证一个类在全局中有且仅有一个实例

懒汉式

public class ConfigManager {
    private static final ConfigManager INSTANCE = new ConfigManager();

    private ConfigManager() {
    }

    public static ConfigManager getInstance() {
        return INSTANCE;
    }
}

饿汉式(双检锁)

public class ConfigManager2 {
    private static volatile ConfigManager2 instance;

    private ConfigManager2() {
    }

    public static ConfigManager2 getInstance() {
        if (instance == null) {
            synchronized (ConfigManager2.class) {
                if (instance != null) {
                    instance = new ConfigManager2();
                }
            }
        }
        return instance;
    }
}

实际应用

  • spring的单例bean

工厂模式

简单工厂模式

简单工厂模式不是正式的设计模式,不过是工厂模式的基础。
简单工厂模式用if-else或switch区分,产生不同的产品。
工厂模式在简单工厂模式的基础上,将if-else/switch改为用不同类的方式实现。
抽象工厂在工厂模式的基础上,由工厂生产单一产品,改为生产一系列产品

工厂方法模式

public interface Tree {

    Fruit createFruit();

    class AppleTree implements Tree {

        @Override
        public Fruit createFruit() {
            return new Apple();
        }
    }

    class OrangeTree implements Tree {

        @Override
        public Fruit createFruit() {
            return new Orange();
        }
    }
}

抽象工厂模式

public abstract class AbstractTree {
    public abstract Fruit createFruit();

    public abstract Leaves createLeaves();

    static class AppleTree extends AbstractTree {

        @Override
        public Fruit createFruit() {
            return new Apple();
        }

        @Override
        public Leaves createLeaves() {
            return new AppleLeaves();
        }
    }

    static class OrangeTree extends AbstractTree {

        @Override
        public Fruit createFruit() {
            return new Orange();
        }

        @Override
        public Leaves createLeaves() {
            return new OrangeLeaves();
        }
    }
}

tag

  • 设计模式
  • java
posted @ 2026-03-05 21:35  微明Studio  阅读(0)  评论(0)    收藏  举报