我正在创建一个应用程序,并在前面检查用户是管理员、用户、版主还是超级管理员。基于此,我创建了一个不同的 XML。
所以我目前所做的是在方法参数中传递一个字符串,将对象转换为 XML 以指定它应该使用哪个映射。然而,传递这些字符串并不好。有没有更好的模式?
我可以将角色检查带到映射类,然后将映射ID更改为与当前用户的角色相同。但我认为安全检查不适合这些课程。
你会创建一个枚举来保留角色并传递它而不是字符串吗?
或者创建不同的类并使用工厂返回正确的对象?
我正在创建一个应用程序,并在前面检查用户是管理员、用户、版主还是超级管理员。基于此,我创建了一个不同的 XML。
所以我目前所做的是在方法参数中传递一个字符串,将对象转换为 XML 以指定它应该使用哪个映射。然而,传递这些字符串并不好。有没有更好的模式?
我可以将角色检查带到映射类,然后将映射ID更改为与当前用户的角色相同。但我认为安全检查不适合这些课程。
你会创建一个枚举来保留角色并传递它而不是字符串吗?
或者创建不同的类并使用工厂返回正确的对象?
通用接口方法
通过在所有返回对象之间实现一个通用接口,您可以在代码中开发一些松散耦合。例如:
public interface XmlReturn
{
public void displayXML(); // Just an example method.
}
还有一个实现这个接口的类:
public class AdminXmlReturn implements XmlReturn
{
public void displayXML() { // Some code here for the admin XML }
}
有了这个,你可以生成某种带有鉴别器的工厂:
public abstract class XmlFactory
{
public static XmlReturn getInstance(String type)
{
// Using string as an example type. Doesn't need to be.
if(type.equals("Admin")) {
return new AdminXmlReturn();
}
}
}
通过按接口类型引用对象,您可以生成任意数量的不同XML
文件,而无需更改任何代码。IE:
public void loadPage(String permission)
{
// permission can be any type. This is just an example.
XmlReturn xml = XmlFactory.getInstance(permission);
xml.displayXML();
// This method exists in all objects that implement XmlReturn
}
优点
这种方法的主要优点是您可以根据需要添加任意数量的新 XML 文件和权限,并且您不需要更改加载 XML 的代码。这种“关注点分离”将帮助您使您的程序非常易于管理和可扩展。
通过将您的决策逻辑移植到工厂,您可以帮助使您的代码更具可读性,并允许其他人从您的程序内部工作的细节中抽象出来,如果您打算共享您的代码。
你的问题不是很清楚。无论如何,我尝试给出一些选择:
如果您想将不同类型的用户序列化为 XML,那么我建议将不同类型的用户建模为类的层次结构,并toXML()
在每个类中具有专门的序列化方法。顺便说一句,JAXB 可以帮助您很多,如果这是您想要做的。
如果您有一个XMLBuilder
编写一些 XML 的类,并且 XML 的构建方式取决于用户的类型,那么我建议您使用类层次结构对不同类型的用户进行建模,然后使用方法重载 in XMLBuilder
,即有几种build()
方法,每种方法都将用户类型层次结构的不同子类作为输入。
我希望这有帮助。