我正在实现一个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());
}
答案 0 :(得分:0)
我假设您的意思是Template Method pattern(有时称为Template)。这不是模板方法,因为类中没有模板方法调用在子类中重新定义的方法(我可以看到)。
如果您遇到的问题是某个类的方法太多,那么您需要应用一些基本的类设计:refactorings, such as "extract class",,其目标是high cohesion,Single Responsibility Principle和{{3 }}:
高凝聚力意味着给定元素的责任密切相关且高度集中。将程序分解为类和子系统是增加系统内聚属性的活动示例。