【问题标题】:Best pattern for labels on website based on client profile基于客户资料的网站上标签的最佳模式
【发布时间】:2015-08-05 01:11:11
【问题描述】:

我需要根据客户端配置文件配置我们当前的 Web 应用程序。所以基本上,允许应用程序根据客户是谁进行扩展和自定义。我目前开始的要求很简单,就是使 Web 应用程序中的文本可配置。因此,ATM 将有 2 个可能的配置文件,并且根据您选择的配置文件(通过 AppSetting 或数据库),所有标签都需要相应地呈现。我可以想到很多方法来做到这一点。我不想做的一件事是将标签值存储在数据库表中,因为 ATM 不需要通过接口修改标签,所以我在想也许是资源文件?

另外,我的下一个要求是根据配置文件打开/关闭网站内的所有功能,因此我需要考虑到这一点。有时一个特征将共享 90% 的逻辑,因此复制到该特征并对该配置文件进行 10% 的更改然后以最小差异具有相同特征的 2 个副本是不可行的。所以我也在寻找解决方案。也许一个可以同时满足这两个要求的整体设计?

我们将不胜感激任何建议。 谢谢

【问题讨论】:

标签: c# asp.net-mvc-4 design-patterns configuration


【解决方案1】:

据我了解,您需要更新网站中的标签并根据所选配置文件提供一些功能。

所以要这样做,我想这样做:

首先实现 MVC 模式,我们的网站将在 View 中,Model 将是 Profile 类,控制器将承载所有业务逻辑。

如果不想使用Database,可以将Profile类的对象序列化并存储(对于ref ),因为我们可以有一个 File 对象,它是一个配置文件,我们可以在其中存储该配置文件可用功能的名称。

在运行时读取该配置文件可用的所有功能,从而填充视图(网站)。这可以通过使用任一控制模式反转来完成。像这样:

public interface IFeatures{...}

public class Feature1 implements IFeatures{...}

public class Feature2 implements IFeatures{...}

public class Profile{
  private String name;
  private String pwd;
  private File configFile;
  ...
}

public class Controller{

    public List<?> getFeauturesForProfile(Profile p){

      List<IFeatures> features;
      List<String>feautures = scanConfigFileForFeatures(p.getConfigFile()); 
      for(String feature : features)
         features = Class.forName(feature).newInstance();
      return features

    }

}

由于我只熟悉java,所以我用java写了syntax-es。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多