1. 程式人生 > >4.泡妞與設計模式(五) 原型模式

4.泡妞與設計模式(五) 原型模式

最終 fin wchar_t 定制 pro 創建 示例 消息 類型

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.泡妞與設計模式(五) 原型模式