Tag: oop

显示的吸气剂

我正在研究getters/setters ,一般的想法是它们是邪恶的,应该避免。 您应该让对象完成工作,并生成结果。 阅读材料: 为什么getter和setter方法是邪恶的 吸气剂和二传手设计不佳吗? 看到矛盾的建议 为什么要使用getter和setter? 考虑到所有这些,假设我有一个看起来像这样的Book class : publc final Book{ private final String title; private final List listofAuthors; private final int numberofpages; //constructor not included in example. //getters for title, listofAuthors, and numberofpages public int numberofpagesleft(int pagesRead){ //code to determine number of pages left } public boolean isWrittenBy(Author author){ //code to […]

什么时候应该而且不应该为了速度/性能而脱离OOP?

在Android的开发者文章中,Google声明你应该通常使用getter和setter声明公共变量而不是私有变量来增强嵌入式设备的性能(我认为函数调用比写入地址更昂贵)。 我想知道 – 在多大程度上应该牺牲性能来坚持OOP范式? 在其他情况下,优化是否意味着脱离“良好”的编码实践?

java web应用程序布局,请解释一些设计原则/模式

我正在看这个使用hibernate,jsp和spring框架的java web应用程序。 (据我所知!) 文件布局是这样的: classes/com/example/project1 在project1中 /dao _entity_Dao.java /dao/hibernate/ _entity_DaoHibernate.java /factory DaoFactory.java DaoFactoryImpl.java /managers _entity_Manager.java /managers/impl _entity_ManagerImpl.java /model _entity_.java /service _xxxx_Service.java /service/impl/ _xxxx_ServiceImpl.java 你们有人在某处读过这种布局吗? 它被认为是最佳实践吗? 工厂与经理和服务有什么区别? (高水平)

在抽象类中使用main方法

我知道在抽象类中使用main方法是合法的,因为Eclipse允许我执行以下操作并将该类作为java应用程序运行。 但做这样的事情有意义吗? 是否存在一个真实的场景,需要在抽象类中使用main方法? public abstract class Automobile { public Boolean powerOn() { // generic implementation for powering on an automobile return true; } public void move() { // generic implementation for move } public void changeDirection(String newDir) { // generic implementation for changing direction } public abstract void accelerate(Integer changeInSpeed); public abstract Integer refuel(Integer inputFuel); […]

我们为什么要覆盖一个方法?

最近我被问到这个问题“为什么要覆盖一种方法?” 我回答说,如果我有一个包含10个方法的类,并且我想使用除了一个方法之外的所有function,那么我将覆盖该方法以拥有自己的function。 然后面试官在那种情况下回答为什么我们不能用不同的名字写一个新方法而是使用那种方法。 是的,这也是对的。 现在我很困惑。 覆盖方法的真正目标是什么? 有人可以告诉我吗? 谢谢大家。

Java中的类inheritance问题,有和没有参数的构造函数

我正在学习Java(二年级IT学生),我遇到了一些问题。 inheritance要准确。 这是代码: class Bazowa { public Bazowa(int i) { System.out.println(“konstruktor bazowy 1”); } public Bazowa(int j, int k) { System.out.println(“konstruktor bazowy 2”); } } class Pochodna extends Bazowa { /* Pochodna() { System.out.println(“konstruktor pochodny bez parametru”); } */ Pochodna(int i) { super(i); System.out.println(“konstruktor pochodny z parametrem”); } } 因此,Pochodna类扩展了Bazowa类,我的练习是创建一个超类,它只包含带参数的构造函数和一个具有两种类型(有和没有)的子类。 当我在Pochodna课程中评论第一个构造函数时,一切正常,但我真的不知道如何在不评论该部分的情况下使其工作。 我想我必须以某种方式从第一个调用构造函数,但不知道如何做到这一点。 保罗,谢谢任何帮助

如何计算显式创建的inheritance树中特定类的实例数?

class A { static int i; { System.out.println(“A init block”+ ++i); } } class B extends A { static int j; { System.out.println(“B init block”+ ++j); } } class C extends B { static int k; { System.out.println(“C init block”+ ++k); } public static void main(String abc[]) { C c =new C(); } } 在上面的代码中,我们可以轻松计算为每个类创建的对象数。 […]

如何处理OO应用程序中的跨领域问题? 使用Singleton? dependency injection? 什么?

假设我正在设计一个应用程序,我需要使用全局计时系统(这是一个跨领域的问题)。 我需要从我的应用程序的任何地方访问来自该全球计时系统的数据,并且我不能看到“应用程序的这部分需要它而另一部分不需要”。 我的问题是..我应该将其设计为一种环境语境(在这种情况下,单身人士),还是应该尝试设计其他方式来适应这种情况? 我当然不认为让我的所有类必须通过构造函数注入将这个全局计时类传递给它们是正确的。 很多时候我必须将参考文件真正传递到链中,直到某些类最终需要它。 另一方面,从阅读的角度来看,它会使一切变得更加清晰(它清楚地说明了我的类的依赖性)。 人们通常如何处理这个问题? 有没有其他技术可以帮助解决这个问题? AOP可能吗? PS:全球计时系统只是我从一本我正在阅读的书中获取的一个想法。 日志系统将是这类问题的另一个很好的例子。 谢谢

嵌套迭代遍历列表,然后是最终删除

我试图通过循环遍历列表(嵌套循环)迭代。 考虑以下代码: ArrayList list = new ArrayList(); // add some values to it for(int i : list) { // ConcurrentModificationException Iterator iterator = list.iterator(); while(iterator.hasNext()) { int n = iterator.next(); if(n % i == 0) { iterator.remove(); } } } 上面的示例导致ConcurrentModificationException。 当然,移除元素的条件只是一个例子。 我确定我只是遗漏了一些东西; 但是我应该如何构建一个在Java 中实现相同function而不会抛出exception的循环 ?

为什么java.util.Scanner类声明为’final’?

我使用Scanner类来读取多个类似的文件。 我想扩展它以确保它们都使用相同的分隔符 ,我还可以添加所有对它们都有效的skipUntilYouFind(String thisHere)等方法。 我可以创建一个包含它们的实用程序类,或者将Scanner类作为变量嵌入到另一个类中,但这更麻烦。 我找到了一些宣布课堂决赛的理由 ,但为什么要在这里完成?