gpt4 book ai didi

java - 界面设计问题: Storing Result of Transactions

转载 作者:行者123 更新时间:2023-12-01 17:39:34 25 4
gpt4 key购买 nike

要求:

  • 系统的多个输入源(社交媒体内容)
  • 多个输出目的地(社交媒体 API)
  • 将添加来源和目的地

一些伪:

IContentProvider contentProvider = context.getBean("contentProvider");
List<Content> toPost = contentProvider.getContent();

for (Content c : toPost) {
SocialMediaPresence smPresence = socialMediaService.getSMPresenceBySomeId(c.getDestId());
smPresence.hasTwitter(); smPresence.hasFacebook(); //just to show what this is
smPresence.postContent(c); //post content could fail for some SM platforms, but shoulnd't be lost forever
}

所以现在我已经精疲力竭了,我需要知道哪些内容已成功发布,以及它是否还没有发布到所有平台,或者将来是否添加了另一个平台,该内容需要发布出去(因此,我的内容提供商不仅需要知道内容是否已发布,还需要知道内容在哪些平台上发布)。我不是在寻找代码,尽管示例/伪代码很好...我正在寻找一种可以实现的解决此问题的方法

最佳答案

  1. 我认为让 Content 知道它将被分派(dispatch)到哪里是不好的。这个逻辑应该是外部的。
  2. 添加多个平台应使用 Strategy pattern 之类的方法来完成。如果您需要添加新的,则必须创建一个新的 SocialMedia 实现,并修改选择目的地的服务以添加逻辑。
  3. 您可以使用依赖注入(inject)或单例来代替使用 new 运算符。 (我非常赞成DI)

所以,类似:

class Content {
String content; // or whatever type you store it in
ContentSource source; // who's the source of the content
// other relevant properties
}


interface SocialMedia {
boolean post(Content content);
boolean isContentSuitable(Content content);
}

class Facebook implements SocialMedia {
boolean post(Content content) {
// implement posting, return "true" if successful, "false" otherwise
}

boolean isContentSuitable(Content content) {
// decide whether this socialmedia is suitable for this content
// based on its source, its length or other features
}
}

class Twitter implements SocialMedia { .. similar to facebook }


class ContentDestinationService {
List<SocialMedia> getContentDestinations(Content content) {
List<SocialMedia> result = new ArrayList<SocialMedia>();
SocialMedia facebook = new Facebook();
if (facebook.isContentSuitable(content)) {
result.add(facebook);
}
// etc for others
return result;
}
}

然后:

for (Content content : toPost) {
List<SocialMedia> destinations =
contentDestinationService.getContentDestinations(content);

int successfulPosts = 0;
for (SocialMedia sm : destinations) {
boolean success = sm.post(content);
// do something with this result, for example:
if (success) {
successfulPosts++;
}
}
}

关于java - 界面设计问题: Storing Result of Transactions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2721419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com