jjzjj

原则上

全部标签

java - 什么是一类一责原则?

我想了解一个类(class),一个职责原则。我找到了一些关于它的文章,但没有例子。如果你能给我一个违反原则的类的例子,那将对我有所帮助。我很熟悉一个方法应该只做一件事的想法,例如get和set方法。它不能与一个类,一个职责相同,因为set和get方法都在一个类中实现。那么这是否意味着该类违反了规则,因为该类既有设置也有获取的责任?什么是一类一责原则? 最佳答案 我不是这个设计模式的100%专家,但我是这样想的-如果我创建一个对象,它恰好负责一件事。如果它需要做其他事情,但又与另一个对象相关,根据情况,我会使用继承或接口(interf

java - 这个简单工厂是否违反了开闭原则?

这个简单工厂是否违反了开闭原则?每次需要创建新的具体产品时,SimpleProductFactory都需要更改,但它遵循单一职责原则,因为这是它永远更改的唯一原因。它的唯一目的是让客户端不违反开放封闭原则,所以我想它本身不会违反,因为显然某处需要这段代码。我对更改工厂不感兴趣,但对这个具体示例是否违规不感兴趣。产品interfaceProduct{publicintgetPrice();}牛奶classMilkimplementsProduct{publicintgetPrice(){return5;}}筹码classChipsimplementsProduct{publicintge

java - Delphi 中是否有 Java 监听器原则的等价物?

我只是对这个很好奇。我知道在Delphi中定义事件的两种方法,使用回调原理和Windows消息原理。但是,消息原理不是面向对象的,回调只适用于一个实例。我想要一个很好的解决方案来处理一个事件,其中两个不同的对象可以在事件触发后执行一个操作。在Java中,我可以简单地添加另一个监听器。有谁知道在Delphi中有任何等效的方法来实现这个好听众的原则? 最佳答案 这些也称为多播事件,AllenBauer写了一篇很好的文章,标题为Multicasteventsusinggenerics对主题进行了很好的报道。简而言之,多播事件并没有像Jav

java - 无效要求或原则

我刚刚在EffectiveJava中读到equals()方法的第五条原则是所有对象都必须不等于null。这本书继续说程序员编写的一些类使用对null的显式测试来防止这种情况:publicbooleanequals(Objecto){if(o==null)returnfalse;...}根据EffectiveJava,上面的非空测试是不必要的。但是,我的问题是,为什么那么多程序员要测试这种非无效要求? 最佳答案 您可以使用instanceof测试来做到这一点:publicbooleanequals(Objecto){if(!(oins

java - java核心的Iterator违反单一职责原则

为什么java.util.Iterator接口(interface)有方法remove()?当然有时候这种方法是必要的,而且大家都已经习惯了它的存在。但实际上迭代器的主要和唯一目标只是提供访问容器元素。当有人想为此接口(interface)创建自己的实现,但由于任何原因不能或不想提供删除元素的能力时,他将被迫抛出UnsupportedOperationException。抛出该异常通常表示架构没有经过深思熟虑或存在设计缺陷。我真的不明白为什么会做出这样的决定。而且我猜它会更正确地分离一个特定的子接口(interface)来支持可选的方法:为什么remove()是Iterator的一部分

java - 理解单一职责原则

我很困惑如何确定一个方法是否有一个责任正在完成,就像CleanCode一书中的以下代码一样publicMoneycalculatePay(Employeee)throwsInvalidEmployeeType{switch(e.type){caseCOMMISSIONED:returncalculateCommissionedPay(e);caseHOURLY:returncalculateHourlyPay(e);caseSALARIED:returncalculateSalariedPay(e);default:thrownewInvalidEmployeeType(e.type)

从 Java 大神 Joshua Bloch 提炼 API 设计的三个核心原则

一个API应该容易学习和使用,且不易被误用。它还应该随着时间而发展,优秀的设计需要预见并适应这种变化。JoshuaBloch 曾在 Sun担任杰出工程师,之后加入谷歌成为首席 Java架构师。他主导了Java 平台上的很多功能,包括Java Collections框架,java.math包,assert机制等。他也是 EffectiveJava的作者。在谷歌 2007年的一场重要演讲中,软件工程师兼技术作家JoshuaBloch强调了API是一种极其重要的商业资产。他指出,这主要是因为如果API对外开放,客户可能会选择在上面进行大量投资,从而很难改变使用习惯。Bloch还警告说,设计糟糕的AP

【Python】新手入门学习:详细介绍开放封闭原则(OCP)及其作用、代码示例

【Python】新手入门学习:详细介绍开放封闭原则(OCP)及其作用、代码示例🌈个人主页:高斯小哥🔥高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈希望得到您的订阅和支持~💡创作高质量博文(平均质量分92+),分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)博客链接简要说明【Python】新手入门学习:详细介绍单一职责原则(SRP)及其作用、代码示例一个类应该只有一个引起变化的原因,确保类的职责单一。【Python】新手入门学习:详细介绍开放封闭原则(OCP)及其作用、代码示例软件

java - 带有私有(private)构造函数的最终类,设计原则是什么

我最近正在浏览一个Netflixopensourceproject在那里我发现了final类和私有(private)构造函数的使用。我完全知道final是为了避免继承private是不允许实例化但我只是想知道为什么将它们一起使用。虽然方法是静态的,所以我们可以在不实例化的情况下使用它们,但仍然渴望了解其背后的设计原则。 最佳答案 有了这段代码,你将拥有这些功能不允许任何人子类化(扩展)您的类不允许实例化你的类将变量或类设置为final可以提高性能(虽然不多,但在大型项目中作为常见做法使用会有所不同)在这种情况下,我看不到用于获取实例

java - 抽象属性是否违反 Liskov 替换原则?

假设我有一个像这样的抽象类:publicabstractclassPet{privatefinalStringname;publicPet(Stringname){this.name=name};publicabstractbooleangetsSpecialTreatment();}publicfinalclassDogextendsPet{@OverridepublicbooleangetsSpecialTreatment(){returntrue;}}publicfinalclassCatextendsPet{@OverridepublicbooleangetsSpecialTr