抽象文档模式

参考# java-design-patterns
本文只用作个人学习

一、抽象文档模式定义

通过抽象的方式更加灵活的配置类的属性,更加安全对属性进行配置

二、使用场景

1.类的属性变化频率很大
2.需要在不改变类的结构上动态的添加类的属性

三、核心思想

1.通过一个集合来存储属性
2.建立属性表统一维护类的属性
3.通过接口来配置获取和添加属性的方式

四、实例

1.抽象出基类,提供存储属性的集合。
2.通过接口定义存储和获取的方法

public interface Document {

    void put(String key, Object value);

    Object get(String key);
}


/**
 * 定义属性的保存方式
 * 将所有属性保存在properties集合中
 */

public abstract class AbstractDocument implements Document {
    private Map mProperties;

    protected AbstractDocument(Map properties) {
        this.mProperties = properties;
    }

    @Override
    public void put(String key, Object value) {
        this.mProperties.put(key, value);
    }

    @Override
    public Object get(String key) {
        return mProperties.get(key);
    }
}

3.通过定义接口,提供属性进行动态配置
属性的键可以由一个类统一管理

/**
*   配置了2个属性  Logo和MODEL
**/
public interface CarLogo extends Document{
    String LOGO = "LOGO";
    String getLogo();
}
public interface CarModel extends Document {
    String MODEL = "MODEL";
    String getModel();
}
//统一管理属性的类
public class PropertyList {
    interface Car {
        String MODEL = "MODEL";
        String LOGO = "LOGO";
    }
}

4.实现类的动态配置
属性都存储在properties类中

public class Car extends AbstractDocument implements CarModel, CarLogo {

    public Car(Map properties) {
        super(properties);
    }
    @Override
    public String getModel() {
        return (String) get(PropertyList.Car.MODEL);
    }
    @Override
    public String getLogo() {
        return (String) get(CarLogo.LOGO);
    }
}

你可能感兴趣的:(抽象文档模式)