作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有2个独立的类,但它们都需要重复做一件事,换句话说,有一个共同的方法。方法是这样的:
private String createButton (String cls, String value) {
return "<input type=\"button\" class=\"" + cls +
"\" value=\"" + value + "\" key=\"" + this.id + "\" />";
}
所以这实际上只是一个单行方法,所以我可以将它复制到两个类中。但我想知道是否有更好的方法可以做到这一点。显然,我真的不想有一个仅包含该方法的父类(super class)。另外,我认为仅为按钮创建另一个类并执行以下操作是愚蠢的:new Button(cls,value),不是吗?
我想到的另一个选择是为包提供一个实用程序类,并混合使用辅助函数。那有意义吗?正在做吗?
最佳答案
您可以使用实用程序类...但它可能会变得不连贯。
public class Utilities {
/* What do these methods have in common? */
public String createButton(...) {
return "<input type='button' />";
}
public double calculateCircumference(Circle c) {
return circle.getRadius() * 2 * Math.PI;
}
}
这种代码会通向God Object的黑暗之路。 .
相反,请考虑确定“实用程序”类的目的和意图:考虑将其设为工厂 - 特别是 Abstract Factory从而保持凝聚力。
public class HTMLWidgetFactory implements AbstractWidgetFactory<String> { // the interface might be overkill
/* Oh! This class is clearly used to create HTML controls! */
public String createButton(...) {
return "<input type='button' />";
}
public String createImage(...) {
return "<img src='lena.png' />";
}
}
关于Java - 如何为两个类设计一个通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499329/
我是一名优秀的程序员,十分优秀!