lsp

    0热度

    1回答

    我有一些(在我看来)相当具体的所有权要求:我有一个类,基本上解释一个双精度数组是一种特定的方式(一些相当大矩阵),并且希望与以另一种方式解释(一个非常长的数学向量)的C库进行通信。在某些情况下,我想解释一个由C库传递给回调函数的指针,也就是说,不需要拥有所有权。在这种情况下,复制将是非常不切实际的。在其他情况下,我想自己分配缓冲区,并将它自己传递给C库。在那种情况下,我的代码拥有缓冲区。 我创建的

    3热度

    1回答

    我们有一个常用的类层次结构: class B { public: int x; B() : x(0) {} virtual ~B() {} }; class D : public B { public: int y; D() : y(0) {} }; 而这需要一个参数的函数 - 参照基类对象。 void b_set(B& b)

    4热度

    1回答

    def foo(a: Map[String, Int], b: HashMap[String, Int]) { // okay val ab = a |+| b // value |+| is not a member of scala.collection.immutable.HashMap[String,Int] val ba = b |+| a }

    1热度

    1回答

    您好我正在使用Autocad2012,并且我正尝试在autocad中加载一个简单的“XYZ.fas”文件,并且希望在每个绘图负载上运行命令“XYZ”。我曾尝试在启动套件和acaddoc.lsp加入XYZ.fas我写了下面的代码: (defun S::STARTUP() (command "XYZ") ) ,并通过这样做,只是工作的一半只是做了.fas文件被加载,但不接受命令。 但如果我手动

    6热度

    3回答

    我读过一些关于使Square成为Rectangle类的继承类的做法的文章,这是一种不好的做法,称它违反了LSP(Liskov替代原则)。我仍然不明白,我在Ruby中做了一个示例代码: class Rectangle attr_accessor :width, :height def initialize(width, height) @width = width

    1热度

    1回答

    假设我正在编写一个Form类的webapp,并且Form类可以有几个Fields。 Field本身是一个抽象类。它包含一个抽象的validators属性,它是一个方法列表,它将调用以确定该字段的内容是否有效。这些验证器通过实例方法调用Field.run_validators(value) CharField是一个允许任意文本的Field子类。这个字段总是有效的,只要给它一些非零长度的字符串即可。

    1热度

    3回答

    此问题引用代表团找到的设计模式here。 我有很多的接口,我代表各种实体的游戏引擎: 球员 车 网 等 和这些每一个都可以被渲染,因此它们实现了包含方法render()的Renderable接口。 方法1 使用代表团,一个例子是这样的: public interface Vehicle { public void drive(); } public class Car impl

    0热度

    1回答

    我目前正在读"Working Effectively with Legacy Code" by Michael Feathers ,我想我都懂的LSP违法行为,但事情是它说一些有关经验,有助于避免LSP违反了规则, 只要有可能,请避免重写具体方法。 如果你这样做,看看你是否可以在覆盖的方法中调用你正在覆盖的方法。 我不太明白数字2,请问您能帮我澄清一下吗?

    0热度

    1回答

    在C#中 - 但它可能适用于其他语言 - 在LSP的上下文中,我如何确保从另一个(可变的)继承的类不会破坏原始合同? 例如: 如果我有public,internal或protected属性setter,有一种风险,即继承类将打破原有的合同。 同样适用于virtual方法。 如果父代和继承类的所有者不是同一个人,那么这可能会导致合同和原始开发人员的意图不足。 不变性是唯一的解决方案还是存在其他一些方

    -4热度

    1回答

    从Android Reference: 虽然与RI一致,这种行为是可以 (不一致),并违反了里氏替换原则。不应该使用这种方法 。 为什么以及该方法如何违反该原则? 作为一个侧面问题,RI代表什么?