以那个什么鸟的例子开始。就不写代码了描述以下。
所以需要将飞这个接口重新封装出来,叫什么IFlyable什么的,这个是具体怎么搞的来着,现在喷到这个问题,想解决。
另外在调用的时候怎么搞?如果有个从设计到调用的鸟例子就更好了。让我醍醐灌顶一下。
作为博问活跃高帅富。50园豆奉上,期待您的精彩回答。
--修改1:
namespace DesignPattern.Lsp { public interface IBird { void Fuck(); } public interface IFlyable { void Fly(); } public class NormalBird : IBird { public void Fuck() { throw new NotImplementedException(); } } public class QQBird : IBird,IFlyable { public void Fuck() { throw new NotImplementedException(); } public void Fly() { throw new NotImplementedException(); } } public interface IBirdApp { void UseBird(IBird bird); } public class NormalBirdApp:IBirdApp { public void UseBird(IBird bird) { bird.Fuck(); IFlyable flyableBird = bird as IFlyable; flyableBird.Fly(); } } public class QQBirdApp : IBirdApp { public void UseBird(IBird bird) { bird.Fuck(); } } }
是这么搞吗?
1 // 设计两个接口 2 public interface IBird 3 { 4 public void Fuck(); 5 } 6 7 public interface IFlayable{ 8 fly(); 9 } 10 11 // 大雁,叫、飞 12 public class NormalBird : IBird, IFlayable 13 { 14 15 } 16 // 企鹅:叫 17 public class QQBird : IBird 18 { 19 }
兄台这是给我的代码加注释玩玩吗。。哈哈
阐明真实的业务问题更好。比喻有时候很拙劣,大家对怎么使用Bird有不同的理解,而如何使用才是设计的关键,而不是所谓的模式本身。
上面的用法是对具体业务的抽象,业务我一句话说不清楚,说了不一定看的清楚。上面的那个我后来写的例子就是我实际的用法
@小AI: IFlyable的例子,直接看书 《Head First Design Pattern》, 那里已经讲得很清楚了。
但是,我仍然觉得业务分析的个瓶颈。说不清,说明业务分析的不清楚,内容多说明拆分的不够细。
我经常看到的情况是,开发人员对业务分析的不足却喜欢用技术手段解决,有个成语,叫做“缘木求鱼”。
@予沁安:
业务的话我要说有得说,很点大,说局部体现不出来,我这是在重构系统。
这个应该是属于“接口隔离原则”
这不矛盾
企鹅可以飞, 但是飞不起来