Design patterns 哪种设计模式适合-策略有意义?

Design patterns 哪种设计模式适合-策略有意义?,design-patterns,Design Patterns,我有一个简单的数据库表,用于存储通过电子邮件订阅文件夹或显示在网站上(仅在web UI上)的用户列表。在存储表中,这由一个数字控制(1-在站点上显示2-通过电子邮件)。当我在UI中显示时,我需要在用户订阅的每个文件夹旁边显示一个复选框(包括电子邮件和网站) 有一个单独的表,其中存储了一组默认订阅,如果用户未表示其订阅,这些默认订阅将应用于每个用户。这基本上是一个文件夹ID和一个虚拟组名 但是,电子邮件订阅不适用于应用这些默认组。因此,如果没有“现场”订阅,则应用默认组。这是规则 这里的策略模式(

我有一个简单的数据库表,用于存储通过电子邮件订阅文件夹或显示在网站上(仅在web UI上)的用户列表。在存储表中,这由一个数字控制(1-在站点上显示2-通过电子邮件)。当我在UI中显示时,我需要在用户订阅的每个文件夹旁边显示一个复选框(包括电子邮件和网站)

有一个单独的表,其中存储了一组默认订阅,如果用户未表示其订阅,这些默认订阅将应用于每个用户。这基本上是一个文件夹ID和一个虚拟组名

但是,电子邮件订阅不适用于应用这些默认组。因此,如果没有“现场”订阅,则应用默认组。这是规则

这里的策略模式(伪代码)怎么样

这有意义吗?如果收到任何批评/帮助/注释,我将非常高兴。我在学习


干杯,下面怎么样。我的选择是使用装饰图案。顺便说一句,我理解了你的问题,总是有默认订阅,用户可以额外订阅更多。而Decorator是针对这种增强功能的,而策略是针对替代实现的

接口订阅
{
公共列表GetSubscriptions(传递查询对象);
}
公共类DefaultSubscriptions实现ISubscription{…}
公共类SubscribedSubscritions实现ISubscription
{
私人ISubscription;
公共类订阅订阅(中的ISubscription)
{
sub=in;
}
公用列表GetSubscriptions(传递查询对象)
{
List defaultSubs=sub.GetSubscriptions(…);
List additionalSubs=//检索订阅的Subs
List allSubs=//defaultSubs+additionalSubs
返回allSubs;
}
}

策略允许您使用替代实现替换某些内容。Decorator透明地增强了对象。

感谢您花时间通读并回答。让我读一读,完全理解,然后尽快回来。再次感谢。好的。如果您不理解,请提出后续问题。如果你认为这个答案有帮助,那么就接受这个答案
Interface ISubscription
  public ArrayList GetSubscriptionData(Pass query object)

Public class SubscriptionWithDefaultGroup
  Implement ArrayList GetSubscriptionData(Pass query object)

Public class SubscriptionWithoutDefaultGroup
  Implement ArrayList GetSubscriptionData(Pass query object)

Public class SubscriptionOnlyDefaultGroup
  Implement ArrayList GetSubscriptionData(Pass query object)
Interface ISubscription
{
  public List<ISubscription> GetSubscriptions(Pass query object);
}

Public class DefaultSubscritions implements ISubscription {...}

Public class SubscribedSubscritions implements ISubscription 
{
   private ISubscription sub;

   public class SubscribedSubscritions(ISubscription in)
   {
     sub=in;
   }

   public List<ISubscription> GetSubscriptions(Pass query object) 
   {
     List<ISubscription> defaultSubs=sub.GetSubscriptions(...);
     List<ISubscription> additionalSubs=//retrieve the subscribed ones


     List<ISubscription> allSubs=//defaultSubs + additionalSubs

     return allSubs;
   }
}