liangh.orz 2018-10-07 19: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-07 22:47
    关注

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

    评论
  • 野火向荣 2018-10-08 00:13
    关注

    这里IUserInfo是一个父接口,IUserBO,IUserBiz这2个接口继承了IUserInfo接口。所以IUserInfo可以强转成IUserBO,IUserBiz这2个接口。UserInfo是IUserInfo接口的实现类,申请对象时用的是IUserInfo接口声明的,所以可以强转成IUserBO,IUserBiz 。

    评论
  • 咕泡-文泰 2021-07-14 15:08
    关注

    userinfo实现了的接口又继承了上面两个接口,那么当然可以强转

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 关于#lstm#的问题:我想利用一个地方的四组数据来预测第五组数据,如果想预测出另外一个地方(只有前四组数据)的第五组数据(相关搜索:预测模型)
  • ¥15 windows窗口外边框分区是什么?(qt应用)
  • ¥15 使用lightgbm框架,对糖尿病趋势进行预测。
  • ¥30 给出MySQL数据库workbench代码
  • ¥15 文本挖掘法衡量保险公司数字化转型
  • ¥15 Direct2D,一个图像如何绘制到不同窗体?
  • ¥15 putimage函数输出了不属于指定路径的图片
  • ¥15 ros2运行代码出现问题
  • ¥15 关于#c++#的问题,请各位专家解答!
  • ¥15 Linux系统虚拟机连不上网络
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部