为什么那么多框架都设计有Context?

程序是现实的映射,但程序要遵守“单一职责原则”,而现实对象是复杂的。
“一个人在家里对父亲尽到子女的职责,在公司对父亲尽到同事的职责,在不同场景下他的职责可能都有差异,而且完全没有止境”。如果完全忠于现实,那么人对象要实现所有的职责……不可能也不合理,在设计中这个类就称为无所不能的“上帝类”。上帝类是应该避免的。

解决这个矛盾的办法是什么?

1,创建一个无所不包的上下文

2,对象的职能 = factory.get(obj,ctx)

这样,将一个对象的职责向外委托,使得整个程序所有的对象都有可能是对象的资源,被对象所复用。以此来实现单一职责和无所不能的变化的统一。

这设计在框架中很常见

1,appplicationcontext:要感知整个应用环境

2,sessioncontext:感知回话上下文环境

3,threadlocal:当前线程

4,request:请求上下文

通过感知无所不包的上下文,对象的能力就被延伸了。一般在框架中,为了良好的扩展性会适用这种设计

另外,除了这个问题以外,上下文还需要解决循环依赖的问题。——在复杂架构中包含几种对象职责的划分

1,实体对象:外部数据和逻辑的抽象
2,领域对象:内部领域概念的抽象
3,值对象:内外变化的抽象
4,关系对象:多个对象之间关系和综合逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值