设计模式-单例模式、工厂模式
设计模式-单例模式、工厂模式
源代码下载请查看 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

浙公网安备 33010602011771号