4.泡妞与设计模式(五) 原型模式

PROTOTYPE 原型模式

原型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。(简单点说就是调用的都可以找到原型,比如你和MM聊天,事先设计好一些情话,需要的时候copy就可以了,这时候情话就是原型)

原型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。

 

代码示例

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <Windows.h>
 4 #include <locale.h>
 5 #include <string.h>
 6 
 7 struct messages
 8 {
 9     wchar_t *name;
10     wchar_t *message_str;
11     void(*p)(struct messages *pmsg);
12 };
13 
14 //最终调用的函数
15 void print(wchar_t *wstr)
16 {
17     wprintf(L"%ls\n", wstr);
18 }
19 
20 //定制消息
21 void dingzhi(struct messages *pmsg)
22 {
23     wchar_t wstr[300] = { 0 };
24     wsprintf(wstr, L"%ls", pmsg->message_str);
25     print(wstr);
26 }
27 
28 void runmsg(void *p)
29 {
30     struct messages *pmsg = (struct messages *)p;
31     pmsg->p(pmsg);
32 }
33 
34 void main()
35 {
36     setlocale(0, "zh-CN");
37     wchar_t strs[10][100] =
38     {
39         L"1",
40         L"2",
41         L"3",
42         L"4",
43         L"5",
44         L"6",
45         L"7",
46         L"8",
47         L"9",
48         L"10"
49     };
50 
51     struct messages msg[10];
52     for (int i = 0; i < 10; i++)
53     {
54         //拷贝
55         msg[i].message_str = strs[i];
56         msg[i].p = dingzhi;
57         HANDLE hd = _beginthread(runmsg, 0, &msg[i]);
58         WaitForSingleObject(hd, INFINITE);
59     }
60 
61     system("pause");
62 }

 

posted @ 2018-03-09 00:31  喵小喵~  阅读(134)  评论(0编辑  收藏  举报