設計模式 工廠模式 使用shared_ptr
阿新 • • 發佈:2017-08-31
urn pro 控制臺 pen int .cpp 設計模式 繼承 spl
參考http://blog.csdn.net/calmreason/article/details/50903729
所有產品繼承同一基本類
由工廠保存基類指針 產生各類產品
代碼
// 002.cpp: 定義控制臺應用程序的入口點。 // #include "stdafx.h" #include <memory> #include <iostream> using namespace std; class Base { public: virtual void f(void) = 0; virtual void g(void) = 0View Code; protected: Base() { std::cout << "Base()" << std::endl; } virtual ~Base() { std::cout << "~Base()" << std::endl; } }; class A :public Base { public: A(void) { std::cout << "A()" << std::endl; } ~A() { std::cout << "~A()" << std::endl; }void f(void) { std::cout << "A::f()" << std::endl; } void g(void) { std::cout << "A::g()" << std::endl; } }; class B :public Base { public: B(void) { std::cout << "B()" << std::endl; } ~B(void) { std::cout << "~B()" << std::endl; }void f() { std::cout << "B::f()" << std::endl; } void g() { std::cout << "B::g()" << std::endl; } }; class Factory { public: static std::shared_ptr<Base> CreateA(void) { return std::make_shared<A>(); } static std::shared_ptr<Base> CreateB(void) { return std::make_shared<B>(); } }; int main() { std::shared_ptr<Base> pbase = Factory::CreateA(); pbase->f(); pbase->g(); pbase = Factory::CreateB(); pbase->f(); pbase->g(); return 0; }
設計模式 工廠模式 使用shared_ptr