用代理模式还是工厂模式还是其他?该如何处理

用代理模式还是工厂模式还是其他?
具体需求是这样的:
类A有很多函数,类B继承类A,在实例化类B的时候,要根据权限的不同确定类B的函数,但是继承类A的类B这样的类有很多很多,不可能针对每个类B写一个代理模式,但是工厂模式有有些迷惑,请给个思路,怎么解决?
------解决方案--------------------
虚函数不行吗?
------解决方案--------------------
B继承自接口A,A定义的方法B必须都要有,所以代理类只需要一个,类B要很多种而已。

可以根据输入的权限,动态编译出继承自A的新类B1、B2、B3等,同时记录每个权限集对应的类B的名称,用于复用。
------解决方案--------------------
把A分解成多个借口,并用XXXimplment方式的类进行分别实现.B继承的时候,变成了:
class B :public AAAAimplment, BBBBimplment, cccimpliment{};这样的形势,不就灵活了。
------解决方案--------------------
引用:
把A分解成多个借口,并用XXXimplment方式的类进行分别实现.B继承的时候,变成了:
class B :public AAAAimplment, BBBBimplment, cccimpliment{};这样的形势,不就灵活了。

类似于WTL的做法。。
------解决方案--------------------
问题有点儿含糊吧,关键是代理啥内容?
 ProxyClass<B1>行不行?
------解决方案--------------------
楼主是为了用模式而模式,工厂模式,代理模式不是你这么用的。
------解决方案--------------------
分支判断或者查表
------解决方案--------------------
一般也就两种办法: 编译时(重载),运行时(覆盖虚函数或者分支判读)

//重载

class user
{   
};

class user1 : public user
{};

class user1 : public user
{};


class Op
{};

class Op1 : public Op
{};


class Op2 : public Op
{};


Op* create(user const&) 
{
  return new Op()
}


Op* create(user1 const&) 
{
  return new Op2()
}


Op* create(user2 const&) 
{
  return new Op1()
}

------解决方案--------------------
B类先注册,然后通过注册表创建对象;

class BManager {
    static std::map<Rights, Creator> mRegistry;
public:
    static bool register(const Rights &r, Creator c);
    B* createB(const Rights &r);
};