lsp

    4热度

    5回答

    Liskov Substitution Principle(LSP)指出,如果一个对象o1是S的一种类型,并且它可以代替对象o2,而这个对象是一个T类型的对象,并且不违反其所有用户的原始行为,那么S是一个T的子类型。 用于显示LSP违例的常见示例是矩形及其派生类型Square。我们的观点是,虽然直觉上Square看起来是Rectangle的子类型,但是有一些与Rectangle不同的Square的

    2热度

    3回答

    Arrays.asList(..)返回数组的一个List包装。这个包装具有固定的大小,并直接支持数组,因此对add()或试图修改列表的其他函数的调用将抛出UnsupportedOperationException异常。 开发人员经常会对此感到惊讶,这一点从计算器中的问题可以看出。 然而列表界面具有add()方法应该意料之中连续工作列表的所有derivers,根据里氏替换原则(LSP) IS)由Ar

    3热度

    1回答

    我answered a question regaurding一ImmutableMap。我建议使用代理模式。 问题在于Map包含put方法,该方法会抛出UnsupportedOperationException。用ImmutableMap代替Map的其他实例将打破Liskov的替代原则。不仅如此,需要申报put和putAll [违反接口隔离原则] 从技术上讲,是没有办法用ImmutableMap

    2热度

    1回答

    我对这个神秘的标题感到非常抱歉,但我真的不知道如何用简短的标题风格来形容它。 首个简短版本。简单的邮件确认机制。一种方法是发送带确认链接的电子邮件。点击链接后,另一个控制器调用第二个方法,该方法从URL中验证令牌。在两个动作之间ConfirmationObject正在被存储,包括令牌和其他可能的数据。成功确认使用“successHandler”后。 简化代码: interface SuccessH

    0热度

    3回答

    在GoF中,有一部分关于生成器实现问题。其中一人说: 在Builder中默认为空方法。在C++中,构建方法是 故意不声明纯虚拟成员函数。他们 定义为空方法,而不是,让客户只覆盖了 操作他们感兴趣的问题。 不空方法违反LSP?它看起来类似于从Bird继承Ostrich那可以fly。

    2热度

    1回答

    关于Liskov替换原则(LSP),它声明派生类的对象可以在不会导致程序执行失败的情况下代替它的基类对象。 如果我的父类是一个抽象基类的功能是什么: public abstract class BaseClass { public void heal() { health++; } } 我可以覆盖的持续治疗方法在派生类中,它仍然是有效的LSP-原则如: pub

    4热度

    3回答

    我刚刚安装了微软代码合同。它是.NET Framework和Visual Studio插件的一部分。它提供运行时检查和定义合同的静态检查。 该工具有四个警告级别,所以我设置了最高。 我已经宣布设计违反Liskov替代原则的类。 public class Person { protected int Age { get; set; } public Person(int ag

    0热度

    1回答

    里氏替换原则要求 前提条件不能在亚型得到加强。 后代不能在子类型中被削弱。 超类型的不变式必须保存在子类型中。 历史约束(“历史规则”)。对象被认为只能通过它们的方法来修改(封装)。由于子类型可能会引入超类型中不存在的方法,因此这些方法的引入可能允许超类型中不允许的子类型状态更改。历史约束禁止这一点。 任何人都可以发布违反这些要点的例子和解决这些问题的另一个例子吗?

    2热度

    2回答

    目前的设计是 SharedFolder是Folder一个子类。 SharedFile是带有远程资源URL的File的子类。 Folder在add方法中接受File。 SharedFolder只接受SharedFile而不是非共享File File可以被移动到另一个Folder与add。 用于浏览SharedFolder和Folder中的文件的UI基本相同。 add in SharedFile违反了

    -2热度

    2回答

    我的示例程序如下; public class Animal { public virtual string MakeSound() { return "General Sound"; } } public class Dog : Animal { public override string M