基于客户档案的网站标签的最佳模式
本文关键字:网站 标签 最佳 模式 档案 于客户 客户 | 更新日期: 2023-09-27 18:06:28
我有一个要求,使我们当前的web应用程序配置基于客户端配置文件。基本上,允许应用程序根据客户来扩展和定制自己。我目前的要求开始将是简单的,这是使web应用程序中的文本可配置。因此,ATM将有2个可能的配置文件,根据您选择的配置文件(通过AppSetting或数据库),所有标签都需要相应地呈现。我能想到很多方法来做这件事。我不想做的一件事是将标签值存储在数据库表中,因为ATM不需要通过接口修改标签,所以我想也许是资源文件?
另外,我的下一个要求将是网站内的所有功能根据个人资料打开/关闭,所以我需要把这一点考虑进去。有时,一个特性将共享90%的逻辑,因此复制到该特性并对该概要文件进行10%的更改,然后将相同的特性复制到两个副本中并将差异最小化,这是不可行的。所以我也在求这个的解。也许是一个涵盖这两种需求的总体设计?
任何建议都将非常感谢。由于
根据我的理解,您需要更新网站中的标签,并根据所选择的配置文件提供一些功能。
因此,我想这样做:
首先实现MVC模式,其中我们的网站将在视图中,模型将是Profile类和控制器将承载所有的业务逻辑。
如果我们不想使用Database,我们可以序列化Profile类的对象并存储(for 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编写了语法