java – 有一个扩展另一个类的’空’类可以吗?
发布时间:2020-12-14 05:32:37 所属栏目:Java 来源:网络整理
导读:假设我有一个类Foo,它有一堆逻辑,另一个类Bar基本相同.然而,由于Foo和Bar是不同的(但相关的)实体,我需要从我的代码中明显的区别(即我可以判断一个实例是一个Foo还是一个Bar) 当我在一起打仗时,没有多大的想法,我结束了以下几点: public class Foo { /* cons
假设我有一个类Foo,它有一堆逻辑,另一个类Bar基本相同.然而,由于Foo和Bar是不同的(但相关的)实体,我需要从我的代码中明显的区别(即我可以判断一个实例是一个Foo还是一个Bar)
当我在一起打仗时,没有多大的想法,我结束了以下几点: public class Foo { /* constructors,fields,method,logic and what-not */ } public class Bar extends Foo { /* nothing here but constructors */ } 这个可以吗?使Bar成为复合课程最好吗?例如: public class Bar { private Foo foo; /* constructors and a bunch of wrapper methods that call into foo */ } 甚至在我们遇到这样的情况下,还有一些低科技的东西: public class Foo { /* constructors,logic and what-not */ private boolean isABar; // Could be an enum } 你怎么看?你如何处理这些“标记类”? 作为我的代码可能希望对待Foo和Bar的一个例子,我的代码将需要能够像List&Foo>和列表< Bar>. A Foo无法进入列表< Bar>反之亦然. 解决方法
在我看来,最好是Foo和Bar将一个共同的祖先类(可能是AbstractFoo)分类,它具有所有的功能. Foo和Bar之间的行为有什么区别?将该差异代码作为AbstractFoo中的抽象方法,而不是在代码中使用if语句.
示例:而不是这样: if (foo instanceof Bar) { // Do Bar-specific things } 这样做: class Bar extends AbstractFoo { public void specialOp() { // Do Bar-specific things } } // ... foo.specialOp(); 这种方法的好处是,如果你需要第三个类,那就像Foo一样,但是有一点点区别,你不需要经过所有的代码,并添加编辑所有的if语句. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- java – JBOSS安全性:web.xml与jboss-web.xml
- Java微信支付之公众号支付、扫码支付实例
- java – 如果assertEquals是相同的日期,为什么这
- 多线程 – 何时使用非阻塞>! /线程和阻塞>! /
- Java / AWT / Swing:如何区分按下的回车键或返回
- java 在Jetty9中使用HttpSessionListener和Filte
- java – 如何在MySQL中存储图片?
- 详解Intellij IDEA中.properties文件中文显示乱码
- java – Joda-Time:获得月的第一个/第二个/最后
- Java-如何使用Joda Time Jar计算准确的时差
热点阅读