浏览 6226 次
锁定老帖子 主题:关于SRP原则的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-02-26
Responsibility是否就是Interface 而实现SRP的手段是否就是将object的各个Responsibility用 Interface来实现? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-02-27
引用 Uncle Bob:
在SRP中,我们把职责定义为“变化的原因”(a reason for change)。如果你能够想到多于一个的动机去改变一个类,那个这个类就具有多于一个的职责。 在具体的类实现中,类的公共方法和属性就是一个类提供给外界的接口(广义上的接口,并非等同于具体编程语言的Inteface)。通过这些接口,类的状态会被改变。也就是说,这些接口体现了类的职责。 结果是,是否使用Interface来实现和类的职责是否单一没有什么必然关系。 |
|
返回顶楼 | |
发表时间:2004-02-27
fournight 写道 引用 Uncle Bob:
在SRP中,我们把职责定义为“变化的原因”(a reason for change)。如果你能够想到多于一个的动机去改变一个类,那个这个类就具有多于一个的职责。 在具体的类实现中,类的公共方法和属性就是一个类提供给外界的接口(广义上的接口,并非等同于具体编程语言的Inteface)。通过这些接口,类的状态会被改变。也就是说,这些接口体现了类的职责。 结果是,是否使用Interface来实现和类的职责是否单一没有什么必然关系。 一个接口?? 好像不太合理吧 |
|
返回顶楼 | |
发表时间:2004-02-29
xugreat 写道 既然接口体现了类的职责,那SRP是否意味类只能实现
一个接口?? 理论上是的。 但是Bob大叔也说了,那几个面向对象的原则并不能在类设计中同时完全遵守,它们有些是相互矛盾的,问题就看你如何平衡。 规则是死的,灵活的应用规则,适当的违反些规则,也是考验我们的设计功力的地方。 |
|
返回顶楼 | |
发表时间:2004-04-27
That's only a choice ! (from Matrix)
呵呵,我总觉得黑客的编剧一定很熟悉软件开发。 |
|
返回顶楼 | |
发表时间:2004-04-28
xugreat 写道 fournight 写道 引用 Uncle Bob:
在SRP中,我们把职责定义为“变化的原因”(a reason for change)。如果你能够想到多于一个的动机去改变一个类,那个这个类就具有多于一个的职责。 在具体的类实现中,类的公共方法和属性就是一个类提供给外界的接口(广义上的接口,并非等同于具体编程语言的Inteface)。通过这些接口,类的状态会被改变。也就是说,这些接口体现了类的职责。 结果是,是否使用Interface来实现和类的职责是否单一没有什么必然关系。 一个接口?? 好像不太合理吧 就像Uncle Bob说得,从引起变化的角度去理解! |
|
返回顶楼 | |
发表时间:2004-04-29
我觉得这些规则不是在设计的初期就要一一想清楚,处处留心,相反,它是用在设计中发现了问题后怎样解决的一种方法(原则)!
测试(Unit Test)为先,渐进式(迭代)的开发! |
|
返回顶楼 | |
发表时间:2004-05-08
引用 Responsibility是否就是Interface
而实现SRP的手段是否就是将object的各个Responsibility用 Interface来实现? 我来发表一个意见: Bob 所说的 responsibility 当然不是 interface. Bob 说的很清楚:responsibility is a axis of change 通常说来, 一个class 完全可以提供多个interface. 这和SRP 没有任何矛盾。 当然, 类的responsibility 与接口会有关联(事物是普遍联系的:-) , 但是,这是两个完全不同的概念。 |
|
返回顶楼 | |