随手写了几行代码

看COM的时候随手写了一行代码,写完发现是工厂方法模式。。。

废话不多说了

#include "stdafx.h"
#include <iostream>
using namespace std;

class InterfaceA
{
public:
        InterfaceA();
        virtual ~InterfaceA();
        virtual void Func1() = 0;
        virtual void Func2() = 0;
};

InterfaceA::InterfaceA(){}
InterfaceA::~InterfaceA(){}

class ComponetB : public InterfaceA
{
public:
        ComponetB();
        virtual ~ComponetB();
        virtual void Func1();
        virtual void Func2();
};

ComponetB::ComponetB(){cout<<"组件B创建"<<endl;}
ComponetB::~ComponetB(){cout<<"组件B析构"<<endl;}
void ComponetB::Func1(){cout<<"CompoentB::Func1 is called \n";}
void ComponetB::Func2(){cout<<"ComponetB::Func2 is called \n";} 

class ComponetC : public InterfaceA
{
public:
        ComponetC();
        virtual ~ComponetC();
        virtual void Func1();
        virtual void Func2();
};
ComponetC::ComponetC(){cout<<"组件C创建"<<endl;}
ComponetC::~ComponetC(){cout<<"组件C析构"<<endl;}
void ComponetC::Func1(){cout<<"ComponentC::Fucn1 is called \n";}
void ComponetC::Func2(){cout<<"ComponetC::Func2 is called \n";}

class IFactory
{
public:
        IFactory();
        virtual ~IFactory();
        virtual InterfaceA* CreateInstance() = 0;
protected:
        InterfaceA* m_ptrIA;
};

IFactory::IFactory() : m_ptrIA(NULL){}
IFactory::~IFactory(){if(NULL != m_ptrIA) delete m_ptrIA; m_ptrIA = NULL;}

class FactoryB : public IFactory
{
public:
        FactoryB();
        virtual ~FactoryB();
        virtual InterfaceA* CreateInstance();
};

FactoryB::FactoryB() : IFactory(){}
FactoryB::~FactoryB(){if(NULL != m_ptrIA) delete m_ptrIA; m_ptrIA = NULL;}
InterfaceA* FactoryB::CreateInstance(){return (m_ptrIA = new ComponetB());}

class FactoryC : public IFactory
{
public:
        FactoryC();
        virtual ~FactoryC();
        virtual InterfaceA* CreateInstance();
};

FactoryC::FactoryC() : IFactory(){}
FactoryC::~FactoryC() {if(NULL != m_ptrIA) delete m_ptrIA; m_ptrIA = NULL;}
InterfaceA* FactoryC::CreateInstance(){return (m_ptrIA = new ComponetC());}

int _tmain(int argc, _TCHAR* argv[])
{
        IFactory* pFactory = new FactoryB();
        InterfaceA* pInterface = pFactory->CreateInstance();
        pInterface->Func1();
        cout<<endl;
        pInterface->Func2();

        cout<<endl<<endl;

        delete pFactory;

        pFactory = new FactoryC();
        pInterface = pFactory->CreateInstance();
        pInterface->Func1();
        cout<<endl;
        pInterface->Func2();

        delete pFactory;

        return 0;
}

随手写了几行代码

时间: 2024-10-12 18:09:29

随手写了几行代码的相关文章

随手写了几行代码2

#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { cout << endl << "关于数组的问题" <<endl; int a[] = {1, 2, 3, 4, 5}; int* ptr = (int*)(&a + 1); cout << "

开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码

开源一个Mac漂亮的小工具 PPRows for Mac, 在Mac上优雅的计算你写了多少行代码. 开源地址: https://github.com/jkpang/PPRows

统计自己写了多少行代码并记录时间和行数

package DAYTWO; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date; public class 输出写了多

[转帖]知道这20个正则表达式,能让你少写1,000行代码

知道这20个正则表达式,能让你少写1,000行代码 https://zhuanlan.zhihu.com/p/29163295 一直说要学习 正则 一直没学习.. 正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/

来测试下 2019 你一共写了多少行代码?

自己动手实现一个代码统计工具 导入所需的库 这个程序需要用到的库有:os,time这两个库都是 Python 自带的,所以我们直接 import 就行 1 import os 2 import time 现在我们已经导入要使用的库了,可以直接写代码了 定义要读取的文件地址 首先,我们定义一个路径吧,因为要读取文件统计代码行数嘛 1 # 指定读取的路径 2 base_dir = './' 3 4 # 定义一个文件列表 5 file_lists = [] base_dir :假设我们读取的是当前目录

知道这20个正则表达式,能让你少写1,000行代码[转载]

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var r = fieldValue.match(reg); if(r==null)alert('Date

帮同事写了几行代码,在安装/下载程序里注册/卸载OCX控件

写了个小控制台程序,这个程序用来注册 / 卸载OCX控件,用在Inno Setup做的安装卸载程序里. #include "stdafx.h" #include <windows.h> #include <iostream> using std::cout; using std::endl; using std::cerr; int _tmain(int argc, _TCHAR* argv[]) { __try { STARTUPINFO si1 = {siz

这20个正则表达式,让你少写1,000行代码

正则表达式--古老而又强大的文本处理工具.仅用一段简短的表达式语句,就能快速地实现一个复杂的业务逻辑.掌握正则表达式,让你的开发效率有一个质的飞跃. 正则表达式经常被用于字段或任意字符串的校验,比如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var r = fieldValue.match(reg);             if(r==null)alert('Date fo

知道这20个正则表达式,能让你少写1,000行代码

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var r = fieldValue.match(reg); if(r==null)alert('Date