参考# 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<String, Object> mProperties;
protected AbstractDocument(Map<String, Object> 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<String, Object> properties) {
super(properties);
}
@Override
public String getModel() {
return (String) get(PropertyList.Car.MODEL);
}
@Override
public String getLogo() {
return (String) get(CarLogo.LOGO);
}
}
网友评论