设计模式-单例模式、工厂模式
源代码下载请查看 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;
}
}
实际应用
工厂模式
简单工厂模式
简单工厂模式用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