Java装饰者模式介绍+实际应用场景的案例 -- 柚子真好吃

Java装饰者模式介绍+实际应用场景的案例 -- 柚子真好吃

一、装饰者模式简单介绍

  1. 穿衣服,蛋糕上加草莓,电脑安音响耳机,小卡片上画条哥。
  2. 简单来讲就是为某一个东西,装饰一些漂亮的饰品,增强一些事务。
  3. 为一个现有的类,在不改变原代码的情况下,修饰或添加新功能。
  4. 也可以将装饰者模式理解为功能模块的分割,类似于分布式理解。

二、业务介绍

  1. 有一个用户名和密码登陆的功能,现在记录登陆的日志,同时添加一个微信登陆功能。
  2. 如果不用装饰者模式也是可以完成的,我们只需重新写一个接口定义 微信登陆。同时在每次登陆成功后添加记录日志功能。
  3. 弊端:如果不需要该功能?后期维护的成本特别大,代码都写到了一个耦合度特别大。
  4. 在采用装饰者模式后,对于功能的修改或添加,我们将采取模块化管理,如果想要实现这个功能那么仅一行代码即可开启,如果不需要那么也是一行代码来关闭。这样也符合了分布式的理念。

三、代码实现

  1. 首先来看现有的登陆功能代码。
    登陆接口
    public interface LoginService {
    
        public String login(String username,String password,String type);
    
    }
    
  2. 实现类
    public class LoginServiceImpl implements LoginService {
        @Override
        public String login(String username, String password, String type) {
            if(type == "account"){
                System.out.println("账号登陆");
                System.out.println("账号:"+username);
                System.out.println("密码:"+password);
                return "Success";
            }
            return "Error!";
        }
    }
    
  3. 此时我们需要增加上述功能,同时不更改原代码。
    装饰器:
    //WeChatDecorator 装饰器同样 实现LoginService接口
    public class WeChatDecorator implements LoginService {
    	//定义接口类型
        private LoginService loginService;
    	
    	//通过构造的方式获取LoginService
        public WeChatDecorator(LoginService loginService){
            this.loginService = loginService;
        }
    	
    	//新增微信登陆功能
        public String WeChatLogin(String username, String password, String type){
            if(type == "weChat"){
                System.out.println("weChat登陆");
                System.out.println("weChat:"+username);
                System.out.println("密码:"+password);
                return "Success";
            }
            return "Error!";
        }
    	
    	//原功能
        @Override
        public String login(String username, String password, String type) {
        	//功能增强
            System.out.println("------记录日志-------");
            return this.loginService.login(username,password,type);
        }
    }
    
  4. 测试结果如下
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小金毛

可怜可怜孩子吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值