zoukankan      html  css  js  c++  java
  • 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
    ", 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 }
  • 相关阅读:
    结对第一次作业-原型设计(文献摘要热词统计)
    第一次作业-准备篇
    Docker 安装 redis
    Docker 安装 MySQL8
    个人作业——软件工程实践总结作业
    团队作业第二次—项目选题报告
    结对第二次—文献摘要热词统计及进阶需求
    结对第一次—原型设计(文献摘要热词统计)
    第一次作业-准备篇
    个人作业——软件工程实践总结
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8531714.html
Copyright © 2011-2022 走看看