Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

重学 Java 设计模式:实战装饰器模式「SSO单点登录功能扩展,增加拦截用户访问方法范围场景」 - bugstack虫洞栈 #92

Closed
fuzhengwei opened this issue Jun 18, 2020 · 10 comments

Comments

@fuzhengwei
Copy link
Owner

https://bugstack.cn/itstack-demo-design/2020/06/09/%E9%87%8D%E5%AD%A6-Java-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F-%E5%AE%9E%E6%88%98%E8%A3%85%E9%A5%B0%E5%99%A8%E6%A8%A1%E5%BC%8F.html

很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固定的流程编写出流水式的代码外,很难去思考整套功能服务的扩展性和可维护性,就像江洋大盗与江洋大偷有着本质的区别!

@HardwayLinka
Copy link

五.2的代码实现有个小错误:
String userId = request.substring(9); //此处的9应该为8,因为前面截取了success后,再截取id的话其下标应为8

@aitanjiujue
Copy link

在介绍装饰类的重点时 应为3个重点

@fuzhengwei
Copy link
Owner Author

@aitanjiujue
在介绍装饰类的重点时 应为3个重点

嘿嘿,好的

@fuzhengwei
Copy link
Owner Author

@HardwayLinka
五.2的代码实现有个小错误:
String userId = request.substring(9); //此处的9应该为8,因为前面截取了success后,再截取id的话其下标应为8

感谢🤭

@lwd-coding
Copy link

为什么说这个模式没有增加子类?不也是使用了继承重写吗?我觉得解释成避免继承深度过深更好

@guangquan123
Copy link

// 模拟获取cookie
String ticket = request.substring(1, 8);
// 模拟校验
boolean success = ticket.equals("success");
装饰器模式的时候,这个校验在哪完成的呢

@fuzhengwei
Copy link
Owner Author

fuzhengwei commented Dec 6, 2020

@guangquan123
// 模拟获取cookie
String ticket = request.substring(1, 8);
// 模拟校验
boolean success = ticket.equals("success");
装饰器模式的时候,这个校验在哪完成的呢

有源码可以下载:https://github.com/fuzhengwei/itstack-demo-design

@ns3154
Copy link

ns3154 commented Dec 31, 2020

问下装饰器和桥接模式有什么区别啊,我看着好像

@fuzhengwei
Copy link
Owner Author

@ns3154
问下装饰器和桥接模式有什么区别啊,我看着好像

  • 装饰器重在包装,就像穿衣服,裤衩秋裤毛裤牛仔裤
  • 桥接主要是为了解决n对n个服务的类扩展问题,裤衩搭配比基尼、秋裤搭配线衣、毛裤配毛衣、牛仔裤配风衣

,设计模式仅仅是指导思想,不是落地方案,所以即使像也没关系,只要根据实际业务使用即可,不要纠结某一种设计模式。

@qjiamei
Copy link

qjiamei commented Jan 6, 2021

@ns3154
问下装饰器和桥接模式有什么区别啊,我看着好像

我看是跟适配器模式像一点.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants