0

我不认为在这个意义上可以使用设计模式。案例场景是有一个基础对象,该对象具有这些属性和始终定义的相应 getter/setter:(id、name、content)。除此之外,还有一些具有可选属性和相应的 getter/setter(评论、作者、已删除)的对象。我希望这些对象为 API 提供我所需要的确切属性/方法。

一种方法是将所有内容放在一个状态膨胀的类中

class Article {
    int id;
    int name;
    String content;
    List<Comment> comments;
    Author author;
    bool deleted;

    //getters and setters omitted 
}

另一种是有多个类,但这会导致类名膨胀

class Article {
    int id;
    int name;
    String content;
    //getters and setters omitted 
}


class DeletedArticle : Article {
    bool deleted = true;
    //getters and setters omitted 
}


class ArticleWithAuthor : Article {
    Author author;
    //getters and setters omitted 
}


 class ArticleWithComments : Article {
    List<Comment> comments;
    //getters and setters omitted 
}


 class DeletedArticleWithAuthor : Article {
    bool deleted = true;
    Author author;
    //getters and setters omitted 
 }

 class DeletedArticleWithComments : Article {
    bool deleted = true;
    List<Comment> comments;
    //getters and setters omitted 
 }

 class DeletedArticleWithAuthorAndComments : Article {
    bool deleted = true;
    Author author;
    List<Comment> comments;
    //getters and setters omitted 
 }

 //AND SO ON... 

由于始终具有(id、name、content)和三个可选变量的类的所有可能配置都是 2^3,我想知道是否有办法使用设计模式(希望没有反射)来做到这一点。请记住,我知道我可以使用更轻松的类型语言或仅使用 JSON/XML,但这不是重点:P。此外,如果这完全相关,我也不熟悉部分类(来自 C#)。

正如它指向我的那样,ExpandoObjects 可能就是这样。您能否提供一些示例代码来表示ArticleWithCommentsDeletedArticleWithAuthorAndComments例如,这样就不需要将这些定义为单独的类?

谢谢

4

0 回答 0