如何抽象出主题组件的概念?

时间:2015-03-14 19:41:16

标签: java oop design-patterns software-design

我希望用户可以使我的程序的某些组件成为主题,以便他们可以在设置用户界面中编辑值,例如背景颜色,笔触或大小,这些更改将在在软件中使用该组件。

如果要更改的值始终相同,那么解决方案将很简单,但它们不是,因为不同的组件可能具有不同的主题"属性。

我想抽象这个解决方案,以便主题组件可以扩展将具有属性更改功能的父Component组。

我目前的想法是创建一个带有update方法的抽象属性类,该方法返回一个布尔值并接受一个String。例如,如果某人正在按某个按钮,则它可能具有边框属性。定义更新方法,使其知道如何基于String更新边框,并且用户将根据用户输入与知道字符串提供的UI进行交互。

public abstract class XProperty
{
    public abstract boolean update(String info);
}

我确信有更好或更简单的方法。设计此功能的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这个答案是基于我对所述问题的理解。 您可以从一个名为Themeable的接口开始,该接口将由具有可更改内容的UI组件类(即背景,边框等)实现.The Themeable接口可以如下所示:

public interface Themeable{

    public boolean update(String info);
}

之后,UI组件类可以实现更改各种属性。这方面的一个例子如下:

public abstract class Background extends UIComponent implements Themeable{

    private Color color;

    public boolean update(String info){
         //update the color instance variable
         //based on the 

从本质上讲,您的UI可以有多个这些UIComponent对象,这些对象根据需要执行不同的实现,您可以使用此更新方法为它们提供新属性。 希望有所帮助。