Role的子类对于你现在的应用来说主要就是继承子Role,然后加上一些特定于那个Role的信息拉,比如不同的Role有不同的操作对象和权限等等,如果有不同的动作的话也需要由子类来分别加以实现.
工厂类的话主要只要实现方法就可以了createInstance(RoleID roleID),根据传入的不同Role的ID来创建你相应的Role子类,但是在createInstance里边返回的应该是一个Role基类,java的多态可以保证你可以根据基类引用准确地调用子类的方法拉.
Role createInstance(RoleID roleID)
{
switch(RoleID)
{
case Role1:
return new Role1(RoleID);
case Role2:
.....
}
关于工厂类更详细地你可以参见一些设计模式方面的书吧,应该比较容易实现的.