聚合器模式在Java中的实现
[编辑]嗯,显然我问得不对。你能告诉我为什么这个问题不好吗 换言之,我想找出为什么要实现中定义的“纯对象聚合”,而不是“对象组织为blob” 我第一次尝试在Java中实现聚合模式 乍一看,界面似乎就是答案,当我需要属性的默认值时,我陷入了困惑。聚合器模式在Java中的实现,java,design-patterns,aggregate,Java,Design Patterns,Aggregate,[编辑]嗯,显然我问得不对。你能告诉我为什么这个问题不好吗 换言之,我想找出为什么要实现中定义的“纯对象聚合”,而不是“对象组织为blob” 我第一次尝试在Java中实现聚合模式 乍一看,界面似乎就是答案,当我需要属性的默认值时,我陷入了困惑。 因为常量是静态的,如果我在接口中定义了任何东西,它将与实现它的每个类共享。我想要的是,我只需要在需要不同于默认值的值的情况下实现它 在这里,抽象类似乎更合适,但我回到了多重继承问题上 以下是我能想到的(不可能的)骨架: public interface
因为常量是静态的,如果我在接口中定义了任何东西,它将与实现它的每个类共享。我想要的是,我只需要在需要不同于默认值的值的情况下实现它 在这里,抽象类似乎更合适,但我回到了多重继承问题上 以下是我能想到的(不可能的)骨架:
public interface MenuItemPopup {
// Defaults
int windowHeight = 200;
int windowWidth = 350;
public void open();
public void setWindowHeight(int newHeight){
windowHeight = newHeight;
}
public void setWindowWidth(int newWidth){
windowWidth = newWidth;
}
}
public interface WindowButton {
// Defaults
Point size = new Point (5, 120);
public void initialize();
public void setSize(Point newSize){
size = newSize;
}
}
public class SomeFuncGUI extends MandatoryParentClass implements WindowButton, MenuItemPopup{
public void open(){
// do stuff
}
public void initialize(){
// do more stuff
}
}
public class OtherFuncGUI extends MandatoryParentClass implements MenuItemPopup{
public OtherFuncGUI(Point customPosition){
setSize(new Point(45, 92));
}
public void open(){
// do stuff
}
}
public class MainClass{
ArrayList <MandatoryParentClass> list = new ArrayList <MandatoryParentClass>();
list.add(new SomeFuncGUI());
list.add(new OtherFuncGUI());
for( MandatoryParentClass button : list){
// process buttons
if(button instanceof WindowButton){
button.open();
}
// process popups
if(button instanceof MenuItemPopup){
button.initialize();
}
}
}
public interface menuitempoup{
//默认值
内窗高度=200;
int windowWidth=350;
公共空间开放();
公共空间设置窗高(int newHeight){
窗高=新高度;
}
公共void setWindowWidth(int newWidth){
窗口宽度=新宽度;
}
}
公共界面窗口按钮{
//默认值
点大小=新点(5120);
公共无效初始化();
公共无效设置大小(点新闻大小){
大小=新闻大小;
}
}
公共类SomeFuncGUI扩展了MandatoryParentClass实现了WindowButton、MenuItemPopup{
公开作废{
//做事
}
公共无效初始化(){
//多做事
}
}
公共类OtherFuncGUI扩展MandatoryParentClass实现MenuItemPopup{
公共用户界面(点自定义位置){
设置大小(新点(45,92));
}
公开作废{
//做事
}
}
公共类主类{
ArrayList=新的ArrayList();
添加(newsomefuncgui());
添加(新的OtherFuncGUI());
用于(MandatoryParentClass按钮:列表){
//进程按钮
如果(窗口按钮的按钮实例){
按钮打开();
}
//处理弹出窗口
if(菜单项菜单的按钮实例){
初始化()按钮;
}
}
}
我意识到这无法编译。我将如何更改它以实现MenuItemPopup和WindowButton的聚合模式?这里的答案是不使用继承。不需要继承windowButton,而是使其成为一个具体的类,并有一个类型为的字段。进行向下投票的原因是,这与这里的主题无关。实现问题属于StackOverflow。程序员负责概念/设计类问题。请花点时间阅读本网站的内容,以熟悉本网站的工作原理。非常抱歉,我想知道这一点。应该已经阅读了常见问题。将移动帖子。@kotoko理想情况下,不需要重新发布,而是允许那些有能力迁移它的人(这不是一个即时的过程)。