用于分解较大类的模板模式

时间:2014-03-05 10:31:56

标签: java oop design-patterns

我正在实现一个API sdk,它具有大量的操作,并希望通过对某些操作进行分组来将其拆分为更易于管理的类。

将一个Spring-socials示例用于Twitter,他们将每个“组”操作分解为特定的类,然后从包装类中初始化它们:他们使用“模板”模式调用它。但这不是我理解模板模式的方式。

这确实是模板模式吗?有没有更好的替代方法来打破像这样的大类操作?

我无法使用CRUD样式,因为操作并不像那样简单。

    public class TwitterTemplate extends AbstractOAuth1ApiBinding implements Twitter {

            private TimelineOperations timelineOperations;

            private UserOperations userOperations;

            private FriendOperations friendOperations;

            private ListOperations listOperations;

            private SearchOperations searchOperations;

            private DirectMessageOperations directMessageOperations;

            private BlockOperations blockOperations;

    public TwitterTemplate(String consumerKey, String consumerSecret, String accessToken, String accessTokenSecret) {
            super(consumerKey, consumerSecret, accessToken, accessTokenSecret);
            initSubApis();
        }
private void initSubApis() {
        this.userOperations = new UserTemplate(getRestTemplate(), isAuthorized(), isAuthorizedForApp());
        this.directMessageOperations = new DirectMessageTemplate(getRestTemplate(), isAuthorized(), isAuthorizedForApp());
        this.friendOperations = new FriendTemplate(getRestTemplate(), isAuthorized(), isAuthorizedForApp());
        this.listOperations = new ListTemplate(getRestTemplate(), isAuthorized(), isAuthorizedForApp());
        this.timelineOperations = new TimelineTemplate(getRestTemplate(), isAuthorized(), isAuthorizedForApp());
        this.searchOperations = new SearchTemplate(getRestTemplate(), isAuthorized(), isAuthorizedForApp());
        this.blockOperations = new BlockTemplate(getRestTemplate(), isAuthorized(),isAuthorizedForApp());
        this.geoOperations = new GeoTemplate(getRestTemplate(), isAuthorized(), isAuthorizedForApp());
        this.streamOperations = new StreamingTemplate(getRestTemplate(), isAuthorized(), isAuthorizedForApp());
    }

1 个答案:

答案 0 :(得分:0)

我假设您的意思是Template Method pattern(有时称为Template)。这不是模板方法,因为类中没有模板方法调用在子类中重新定义的方法(我可以看到)。

如果您遇到的问题是某个类的方法太多,那么您需要应用一些基本的类设计:refactorings, such as "extract class",,其目标是high cohesionSingle Responsibility Principle和{{3 }}:

  

高凝聚力意味着给定元素的责任密切相关且高度集中。将程序分解为类和子系统是增加系统内聚属性的活动示例。