读书人

各位大侠麻烦看上。这算个什么设计模

发布时间: 2012-11-03 10:57:43 作者: rapoo

各位大侠,麻烦看下。这算个什么设计模式
[code=C/C++][/code]
class A
{
public:
virtual void print()
{
cout<<"A"<<endl;
}
};

class B : public A
{
public:

virtual void print()
{
cout<<"B"<<endl;
}

};
class C : public A
{
public:
virtual void print()
{
cout<<"C"<<endl;
}

};
class Factory
{
public:
void Create(A& c)
{
c.print();
}

};
void main()
{
A a;
B b;
C c;
Factory f;
f.create(a);
f.create(b);
f.create(c);

}

[解决办法]
啥也不是
[解决办法]
工厂模式
[解决办法]
就是普通的基础和多态
[解决办法]
看错了 没啥模式
[解决办法]
啥也不是
[解决办法]
垃圾模式
[解决办法]

C/C++ code
// use STL#include <string>class A{public:  virtual void print()  {  cout<<"A"<<endl;  }};class B : public A{public:  virtual void print()  {  cout<<"B"<<endl;  }};class C : public A{public:  virtual void print()     {  cout<<"C"<<endl;  }};class Factory{public:  A *GetClass(string type)  {    if ("A" == type) return new A;    if ("B" == type) return new B;    if ("C" == type) return new C;    return NULL;  }};void main(){  Factory f;  f.create("A")->print();  f.create("B")->print();  f.create("C")->print();  // free mem? the only for show}
[解决办法]
探讨

C/C++ code


// use STL
#include <string>

class A
{
public:
virtual void print()
{
cout<<"A"<<endl;
}
};

class B : public A
{
public:

virtual void print()
{
cout<<"B"<<endl;
}

};……

[解决办法]
草木皆兵模式
[解决办法]
原理就是内存覆盖。 根据不同的对象调用不同的函数

读书人网 >C++

热点推荐