4.泡妞与设计模式 原型模式

Posted 喵小喵~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于4.泡妞与设计模式 原型模式的主要内容,如果未能解决你的问题,请参考以下文章

2.泡妞与设计模式 外观模式

9.泡妞与设计模式(10) 访问者模式

设计模式4原型模式

架构师内功心法,只是单纯听说过的原型模式详解

架构师内功心法,只是单纯听说过的原型模式详解

原型模式