日期:2014-05-20  浏览次数:21067 次

IBLL怎么扩展。。。。。。。。。。。。。。
比如有这样一个
IUser :
C# code

    public interface IUser {
        int Method1();
        int Method1();
        int Method1();
        int Method1();
        int Method1();
    }



之后的User 也实现了他 工厂类又创建了 (IUser)User  

可是突然发现有个很重要的方法 void MainMethod() 忘了在IUser 里面定义

这个时候该怎么办 

重新定义个接口的方法 void MainMethod()???

因为工厂创建的是接口的对象。。直接在user里面添加方法 创建的(IUser)User 就访问不到 MainMethod() 这个方法了  

到底该怎么办嘛... 还是再定义一个新的接口...?

------解决方案--------------------
工厂的目的是什么呢?如果汽车工厂出来的是马车,那么当然要重构了。至于说是把责任归咎于原来那个接口设计缺陷,还是归咎于应该使用新的接口,还是需要你自己定夺。一般来说,假设已经发布过针对前一个接口的产品,编程当然是希望前后一致保持框架知识的可靠性,那么就不应该把接口修改,而是应该定义新的接口。但是反之,编程当然希望类、接口越少越好,因此就不要定义新的接口,而是应该修改原来的接口。