design-principles相关内容

设计模式和设计原则有什么区别?

我是 Ruby on Rails 的新手,我浏览了这些文章. Ruby 中的设计模式:观察者、单例莉>Ruby 中的设计模式 但我无法理解设计模式和设计原则之间的实际区别.有人可以解释一下区别吗? 解决方案 设计原则: 设计原则是我们在设计软件时应该遵循的核心抽象原则.请记住,它们不是具体的——而是抽象的.只要我们在允许的条件下,它们就可以以任何语言、在任何平台上应用,无 ..
发布时间:2021-12-22 09:09:38 其他开发

管道设计模式实现

这是一个关于流水线实现的设计问题.以下是我的幼稚实现. 管道中各个步骤/阶段的接口: 公共接口 Step{公共 U 执行(T 输入);} 管道中步骤/阶段的具体实现: 公共类 StepOne 实现 Step{@覆盖公共整数执行(整数输入){返回输入 + 100;}}公共类 StepTwo 实现 Step{@覆盖公共整数执行(整数输入){返回输入 + 500;}}公共类 StepThre ..
发布时间:2021-12-22 09:00:00 Java开发

单一职责原则的一个例子是什么?

谁能给我举一个单一职责原则的例子?我试图理解在实践中,一个班级只有一个责任意味着什么,因为我担心我可能每天都违反这条规则. 解决方案 查看 可靠的描述. 除非你要求更具体的东西,否则很难提供更多帮助. 单一职责是一个类做一件特定的事情(职责)而不是试图做超出它应该做的更多的概念,这也被称为高内聚力. 类通常不会以低内聚开始,但通常在几个版本和不同的开发人员添加它们之后,您 ..

什么是 Liskov 替换原则的例子?

我听说 Liskov 替换原则 (LSP) 是面向对象设计的基本原则.它是什么以及它的使用示例有哪些? 解决方案 一个很好的例子说明了 LSP(由鲍勃叔叔在我最近听到的播客中给出)是有时在自然语言中听起来正确的东西在代码. 在数学中,Square 是 Rectangle.实际上,它是矩形的特化.“is a"使您想通过继承对其进行建模.但是,如果在代码中您使 Square 从 Rect ..

为什么选择结构而不是类?

玩 Swift,来自 Java 背景,为什么要选择 Struct 而不是 Class?似乎它们是同一回事,结构提供较少的功能.为什么选择它? 解决方案 根据非常流行的 WWDC 2015 演讲 Protocol Oriented Programming in Swift (视频,转录),Swift 提供了许多特性,使结构在许多情况下比类更好. 如果结构相对较小且可复制,则结构更可取, ..
发布时间:2021-12-02 15:22:12 移动开发

wcf最佳设计原则

我希望对现有的WCF服务进行一些更改。我想知道是否最好使超级方法(例如Save())使用接收到的值来决定要采取的操作,或者是否应该将这些操作分解为自己的方法并将其公开给消费者决定何时打电话给他们。 例如,我有一个付款处理程序,可以在商家进行付款尝试及其结果时接收来自我们商家的通知。对我来说,允许处理程序以状态更改传递对象并让super方法尝试弄清楚该怎么做(假设没有错误将数据弄乱了)还是创建 ..
发布时间:2020-06-11 19:08:02 C#/.NET

使用IoC容器时如何管理接口隔离?

可能重复: StructureMap单例用法(实现两个接口的类) 我目前正在设计一个小型系统,目前正在使用structureMap作为IoC.我刚刚才知道接口隔离的意义...我现在想知道. 如果我有一个特定的业务对象,它将实现说三个接口...我应该如何在代码的配置和初始化中处理这个问题? 假设在一个简单的场景中,对于名为EmployeeServiceObject的服务层类,我有两个 ..

使用Java反射不良做法吗?

我正在为客户端构建一个应用程序,并且我需要能够通过字符串引用字段值,即用户使用字符串来定义他们想要更改其值的字段。 ,这是抽象框架的一部分,因此从技术上讲,我不知道他们希望更改的字段的名称。当然我可以使用哈希映射来做到这一点,但是我正在考虑使用Java反射,因为这允许字段保留为对象的字段,而不是将值编码为哈希映射。我在自己的个人工作中使用了反射,但是我想知道使用Java反射是否真的是不好的做法,我 ..
发布时间:2020-06-11 19:07:56 Java开发

YAGNI和KISS原理有什么区别?

显然,YAGNI和KISS之间在语法上存在差异,但我看不到它们之间的语义差异.他们在本质上真的是同一回事吗? 解决方案 YAGNI(您确实需要它)指的是过度分析和实现可能需要或不需要的东西.当然,算法优雅是不错的选择,但除了大多数情况外,您都不需要它.在一般的工程术语中,您应谨慎选择不要包含自己的要求,以免使自己的想法污染客户的需求,以至于最终使项目花费成本,而对客户的影响很小. K ..
发布时间:2020-06-11 19:07:53 其他开发

设计模式和设计原则之间有什么区别?

我是Ruby on Rails的新手,并且阅读了这些文章. Ruby中的设计模式:观察者,单例 Ruby中的设计模式 但是我无法理解设计模式和设计原则之间的实际区别. 有人可以解释一下区别吗? 解决方案 设计原则: 设计原则是我们在设计软件时应遵循的核心抽象原则.请记住,它们不是具体的,而是抽象的.只要我们在允许的条件内,它们便可以以任何语言,在任何平台上应用,而不论状 ..
发布时间:2020-06-11 19:07:49 其他开发

Liskov替代原则-没有覆盖/虚拟方法?

我对Liskov替换原理的理解是,对派生类而言,基类的某些正确属性或基类的某些已实现行为也应为真. 我想这意味着在基类中定义方法时,永远不要在派生类中重写该方法,因为用基类代替派生类将产生不同的结果.我想这也意味着拥有(非纯)虚拟方法是一件坏事吗? 我认为我可能对该原理有错误的理解.如果我不这样做,我将不明白为什么这个原则是好的做法.谁可以给我解释一下这个?谢谢 解决方案 Li ..

为什么选择结构而不是课堂?

从Java背景开始玩Swift,为什么要选择Struct而不是Class?似乎它们是同一回事,但Struct提供的功能较少.为什么选择它呢? 解决方案 根据非常流行的WWDC 2015演讲中的Swift面向协议编程(如果结构相对较小且可复制,则它们是可取的,因为与在类中对同一实例进行多次引用相比,复制要安全得多.当将变量传递给许多类和/或在多线程环境中时,这一点尤其重要.如果您始终可以将变 ..
发布时间:2020-06-11 19:07:45 移动开发

直接调用variable属性与getter/setter方法的比较-OOP Design

我知道这可能是主观的,但是我阅读了 Google for PHP的优化页面,并且他们建议直接使用variable属性,而无需使用getter和setter.可以理解,我可以看到性能的提高,但这真的是一个好的设计实践吗? 使用getter/setter的示例: class dog { public $name = ''; public function setName($nam ..
发布时间:2020-05-21 20:41:47 PHP

Liskov替换原理是否适用于从抽象类继承的子类型?

松散地说,《里斯科夫替代原理》指出,派生类可以代替基类而不会影响用户. 如果基类是抽象类,这意味着没有用户使用基类的实例,那么Liskov继承限制是否仍适用于派生类? 解决方案 仅仅因为您不能实例化特定的类并不意味着您不能使用它.在这种情况下,调用代码使用抽象基类作为操作所依据的合同的定义.从这个意义上讲,从基类派生的每个类都应该相对于基类定义的接口是可互换的,因此,Liskov仍然适用. ..

没有行为的对象

除了通用语言外,我还有一个与一般OOP相关的问题. 我正在尝试一个简单的应用程序(在Java中),并且试图像在现实世界中一样对它进行建模. 在进行重构时,我意识到我想到了一个简单的对象,它只有一个成员,并且覆盖了等号和哈希码. 我的问题是....拥有这样的物体是一种不好的做法吗? (欢迎引用博客等) 解决方案 简短回答: 拥有这样的物体是一种不好的做法吗 不一定,但这取决 ..
发布时间:2020-05-20 00:57:17 其他开发

Scala的模式匹配是否违反了开放/封闭原则?

如果我添加了一个新的case类,这是否意味着我需要搜索所有模式匹配代码并找出需要在哪里处理新类?我最近一直在学习该语言,当我读到一些支持和反对模式匹配的论据时,我对于应该在哪里使用它感到困惑.请参阅以下内容: 专业版: Odersky1 和 Odersky2 骗局: Beust 在每种情况下,评论也都不错.那么模式匹配是令人兴奋的事情还是我应该避免使用的事物?实际上,我想答案是“ ..
发布时间:2020-05-20 00:45:58 其他开发