Windows编程之MDI

Create All kinds of guns.

设计重点:

1 基类作接口

2 继承类是各种不同的类

3 构建工厂类,然后根据需要创造不同的类,可以传入关键字,或者索引等。

#pragma once
#include <string>
#include <iostream>

using namespace std;

//Base class
class Gun
{
public:
	virtual string description()
	{
		return "Generic Gun";
	}
};

//Derived class
class MachineGun :public Gun
{
public:
	string description()
	{
		return "MachineGun - Gun for fast shoot";
	}
};

class LaserGun : public Gun
{
public:
	string description()
	{
		return "LaserGun - Melt everything with heat";
	}
};

class ShockwaveGun :public Gun
{
public:
	string description()
	{
		return "ShockwaveGun - shock down everything";
	}
};

class GofFactory_Gun
{
public:
	GofFactory_Gun()
	{
	}

	Gun *createGun(const string &type)
	{
		if ("MachineGun" == type)
		{
			return (new MachineGun);
		}
		else if ("LaserGun" == type)
		{
			return (new LaserGun);
		}
		else if ("ShockwaveGun" == type)
		{
			return (new ShockwaveGun);
		}
		else
		{
			return NULL;
		}
	}
};

void GofFactory_Gun_Run()
{
	GofFactory_Gun gofGun;

	Gun *g = gofGun.createGun("MachineGun");
	cout<<g->description()<<endl;

	delete g;
	g = gofGun.createGun("LaserGun");
	cout<<g->description()<<endl;

	delete g;
	g = gofGun.createGun("ShockwaveGun");
	cout<<g->description()<<endl;

	delete g;
}

结果:

Windows编程之MDI,布布扣,bubuko.com

时间: 2024-07-28 20:54:59

Windows编程之MDI的相关文章

[深入浅出WIndows 10]网络编程之HttpClient类

14.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类提供了一个简单的接口来处理最常见的任务,并为身份验证提供了适用于大多数方案的合理的默认设置.对于较为复杂的 HTTP 操作,更多的功能包括:执行常见操作(DELETE.GET.PUT 和 POST)的方法:获取.设置和删除 Cookie 的功能:支持常见的身份验证设置和模式:异步方法上提供的 HTTP

QT核心编程之Qt线程 (c)

QT核心编程之Qt线程是本节要介绍的内容,QT核心编程我们要分几个部分来介绍,想参考更多内容,请看末尾的编辑推荐进行详细阅读,先来看本篇内容. Qt对线程提供了支持,它引入了一些基本与平台无关的线程类.线程安全传递事件的方式和全局Qt库互斥量允许你从不同的线程调用Qt的方法.Qt中与线程应用相关的类如表6所示. 表6 Qt中与线程相关的类 使用线程需要Qt提供相应的线程库的支持,因此,在编译安装Qt时,需要加上线程支持选项. 当在Windows操作系统上编译Qt时,线程支持是在一些编译器上的一个

[深入浅出WP8.1(Runtime)]网络编程之HttpClient类

12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类提供了一个简单的接口来处理最常见的任务,并为身份验证提供了适用于大多数方案的合理的默认设置.对于较为复杂的 HTTP 操作,更多的功能包括:执行常见操作(DELETE.GET.PUT 和 POST)的方法:获取.设置和删除 Cookie 的功能:支持常见的身份验证设置和模式:异步方法上提供的 HTT

GPS模块编程之NMEA0183协议

NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式.现在已经成为GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议. 下图是我调试用的GPS芯片,是深圳一家公司生产的.基本上接上天线,供电引脚电压正常的话,就可以通过串口读取GPS数据了.所以GPS编程最主要的是解析数据,要解析数据就得了解协议格式. 下面一组数据

【转】JAVA网络编程之Socket用法

JAVA网络编程之Socket用法 分类: JAVA2012-08-24 15:56 710人阅读 评论(0) 收藏 举报 在客户/服务器通信模式中,客户端需要主动建立与服务器连接的Socket,服务器端收到客户端的连接请求,也会创建与客户端连接的Socket.Socket可以看做是通信连接两端的收发器,客户端和服务店都通过Socket来收发数据. 1.构造Socket public Socket() 通过系统默认类型的 SocketImpl 创建未连接套接字 public Socket(Str

网络编程之HttpClient类(转)

12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类提供了一个简单的接口来处理最常见的任务,并为身份验证提供了适用于大多数方案的合理的默认设置.对于较为复杂的 HTTP 操作,更多的功能包括:执行常见操作(DELETE.GET.PUT 和 POST)的方法:获取.设置和删除 Cookie 的功能:支持常见的身份验证设置和模式:异步方法上提供的 HTT

服务器编程之路:进无止境(下)

(接上文) 为了找到第二个命题的解决方法,我们可以再回过头来看看本文中第一版的服务器程序.前面也说了,第一版程序的问题在于,一条线程服务一个连接,而OS切换线程的开销很大,所以造成性能上不去.但第一版程序绝对是愉快的顺序编程.如果我们想保留顺序编程,那应该怎么克服性能方面的缺陷呢? 问题被直接导向为:既然OS调度线程很吃力,那是否存在一种"用户态线程",由程序自己调度,让OS一边玩儿去? 先抛出答案,所谓的"用户态线程",我们一般的实现就是"协程(coro

网络编程之WebClient,WebRequest和WebResponse类

一.基本的WebClient类 1.首先使用OpenRead()方法返回一个stream流对象 2.把Stream流对象转换为StreamReader对象 3.使用ReadLine()方法从数据流中以文本的方式获取数据 WebClient web = new WebClient(); Stream stream = web.OpenRead("http://www.reuters.com"); StreamReader sr = new StreamReader(stream); wh

C++混合编程之idlcpp教程Lua篇(2)

在上一篇 C++混合编程之idlcpp教程(一) 中介绍了 idlcpp 工具的使用.现在对 idlcpp 所带的示例教程进行讲解,这里针对的 Lua 语言的例子.首先看第一个示例程序 LuaTutorial0.像很多语言的第一个例子一样,是一个打印 Hello world 的程序.用Visual Studio 2015打开解决方案文件 tutorials\LuaTutorials\LuaTutorials.sln,其下已经有多个工程文件. 在工程LuaTutorial0中,已经加入了三个文件,