设计模式复习-抽象工厂模式

设计模式复习-抽象工厂模式

        有两种硬件,PC和Phone,有两种系统,Windows和Linux,现在假设PC和Phone上全都能安装这两个系统,并且将来硬件不会在变化,但是系统可能需要扩展,比如扩展一个Android系统,处理这样的问题,尽量满足OCP。

 

//FactoryMode.h

#pragma once

#include<iostream>

using namespace std;

class CinterfaceOS {

public:

virtual void StartOs() = 0;

virtual void CloseOs() = 0;

};


class CWindows : public CinterfaceOS {

public:

void StartOs() {

cout << "Start Windows OS" << endl;

}

void CloseOs() {

cout << "Close Windows OS" << endl;

}

};


class CLinux : public CinterfaceOS {

public:

void StartOs() {

cout << "Start Linux OS" << endl;

}

void CloseOs() {

cout << "Close Linux OS" << endl;

}

};


class CWindowsPC : public CWindows {

public:

void StartOs() {

cout << "StartWindowsPC:";

CWindows::StartOs();

}

void CloseOs() {

cout << "CloseWindowsPC:";

CWindows::CloseOs();

}

};


class CWindowsPhone : public CWindows {

public:

void StartOs() {

cout << "StartWindowsPhone:";

CWindows::StartOs();

}

void CloseOs() {

cout << "CloseWindowsPhone:";

CWindows::CloseOs();

}

};


class CLinuxPC : public CLinux {

public:

void StartOs() {

cout << "StartLinuxPC:";

CLinux::StartOs();

}

void CloseOs() {

cout << "CloseLinuxPC:";

CLinux::CloseOs();

}

};


class CLinuxPhone : public CLinux {

public:

void StartOs() {

cout << "StartLinuxPhone:";

CLinux::StartOs();

}

void CloseOs() {

cout << "CloseLinuxPhone:";

CLinux::CloseOs();

}

};


class CInterfaceFactory {

public:

virtual CinterfaceOS * CreatePcOs() = 0;

virtual CinterfaceOS * CreatePhoneOs() = 0;

};


class CCreateFactoryWindows : public CInterfaceFactory {

CinterfaceOS * CreatePcOs() {

return new CWindowsPC();

}

CinterfaceOS * CreatePhoneOs() {

return new CWindowsPhone();

}

};


class CCreateFactoryLinux : public CInterfaceFactory {

CinterfaceOS * CreatePcOs() {

return new CLinuxPC();

}

CinterfaceOS * CreatePhoneOs() {

return new CLinuxPhone();

}

};


#include "stdafx.h"

#include "FactoryMode.h"

#include <iostream>

using namespace std;


int main() {

CInterfaceFactory *pHashFactoryWindows = NULL;

CinterfaceOS *pHashOsWindowsPC = NULL;

CinterfaceOS *pHashOsWindowsPhone = NULL;


CInterfaceFactory *pHashFactoryLinux = NULL;

CinterfaceOS *pHashOsLinuxPC = NULL;

CinterfaceOS *pHashOsLinuxPhone = NULL;


pHashFactoryWindows = new CCreateFactoryWindows();

pHashOsWindowsPC = pHashFactoryWindows->CreatePcOs();

pHashOsWindowsPhone = pHashFactoryWindows->CreatePhoneOs();


pHashFactoryLinux = new CCreateFactoryLinux();

pHashOsLinuxPC = pHashFactoryLinux->CreatePcOs();

pHashOsLinuxPhone = pHashFactoryLinux->CreatePhoneOs();


pHashOsWindowsPC->StartOs();

pHashOsWindowsPC->CloseOs();

pHashOsWindowsPhone->StartOs();

pHashOsWindowsPhone->CloseOs();


pHashOsLinuxPC->StartOs();

pHashOsLinuxPC->CloseOs();

pHashOsLinuxPhone->StartOs();

pHashOsLinuxPhone->CloseOs();


delete pHashOsWindowsPC;

delete pHashOsWindowsPhone;

delete pHashFactoryWindows;


delete pHashOsLinuxPC;

delete pHashOsLinuxPhone;

delete pHashFactoryLinux;



//getchar();

return 0;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值