装饰模式

装饰模式:

不改变原有对象功能的基础之上进行扩展,
1.面向抽象component
2.实体组件 concretComponent
3.Decrator: 一般实现为一个抽象类
4.具体装饰concreateDecrator

以log日志文件格式改变为例。将log日志文件的格式以json格式输出、

public class DecoratorLogger implements Logger {
    public Logger logger;

    public DecoratorLogger(Logger logger) {
        this.logger = logger;
    }

    @Override
    public String getName() {
        return null;
    }
    。。。。
    }
    
public class JsonLogger extends DecoratorLogger {
    public JsonLogger(Logger logger) {
        super(logger);
    }

    @Override
    public void error(String s) {
        JSONObject jsonObject = newJsonObject();
         jsonObject.put("错误信息", s);
        logger.error(jsonObject.toJSONString());
    }

    @Override
    public void error(Marker marker, String s, Object o) {
        super.error(marker, s, o);
    }
    public JSONObject newJsonObject() {
        return new JSONObject();
    }
}
public class JsonLoggerFactory {
    public static JsonLogger getLogger(Class clazz) {
        Logger logger = LoggerFactory.getLogger(clazz);
        return new JsonLogger(logger);
    }
}

装饰漆和代理模式对比:
1.装饰漆强调与自身的扩展。动态代理强调代理过程的控制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值