liangh.orz 2018-10-08 03:19 采纳率: 0%
浏览 562

《设计模式之禅》- 单一职责原则疑问

图片说明

             重新拆封成两个接口,IUserBO负责用户的属性,简单地说,IUserBO的职责就是收集和反馈用户的属性信息;IUserBiz负责用户的行为,完成用户信息的维护和变更。各位可能要说了,这个与我实际工作中用到的User类还是有差别的呀!别着急,我们先来看一看分拆成两个接口怎么使用。OK,我们现在是面向接口编程,所以产生了这个UserInfo对象之后,当然可以把它当IUserBO接口使用。当然,也可以当IUserBiz接口使用,这要看你在什么地方使用了。要获得用户信息,就当是IUserBO的实现类;要是希望维护用户的信息,就把它当作IUserBiz的实现类就成了,如代码清单1-1所示。

代码清单1-1 分清职责后的代码示例

 .......

IUserInfo userInfo = new UserInfo();

//我要赋值了,我就认为它是一个纯粹的BO

IUserBO userBO = (IUserBO)userInfo;

userBO.setPassword("abc");

//我要执行动作了,我就认为是一个业务逻辑类

IUserBiz userBiz = (IUserBiz)userInfo;

userBiz.deleteUser();

.......
            设计模式一书中有这么一段说明单一职责原则的,这里并不是很明白.

            这里为什么能把 身为父类的IUserInfo强转为子类IUserBO,IUserBiz.这里 userInfo 是用父类来声明的啊按理说不是不能被强转?
  • 写回答

3条回答 默认 最新

  • hu837389340 2018-10-08 06:47
    关注

    userInfo 是包含了用户的属性和行为的接口的实现,当你需要用户属性时,就可以强转成IUserBO类型,当需要用户行为时同样也可以强转为IUserBiz类型,看你实际运用中需要什么,当然也可以不强转,但是这样没有强转后那么清晰罢了

    评论

报告相同问题?