zoukankan      html  css  js  c++  java
  • 设计模式学习笔记(1)——简单工厂模式

    说明(2018-4-3 20:25:16):

    1. 数据结构看到了树,好像后面的都是伪代码了,感觉暂时用不上。另外还有一个队列的实现没有敲代码,不过目前已经对指针有了一个深刻的了解了。准备先放一放数据结构,开始C#的继续深入。

    2. 其实一开始看数据结构,是因为asp.net后面讲线程用到了委托,理解很困难,于是去看三层,结果又用到事件,更是稀里糊涂,后来去看基础班的委托与事件,虽然讲了一大堆,还是模模糊糊,不知道怎么实际利用,心里很排斥。

    3. 所以一直挖底层到C语言的指针,因为教程里总是有意无意的提到,委托是一种类型安全的指针。所以对委托有困惑的,建议学习一下数据结构,比从网上找的各种举例子要深刻的多。

    4. 下午想复习一下网页的用户列表,发现电脑没有sqlserver,于是准备装个简装版,用SQLManagementStudio安装完,死活本地登录不了,sql服务里连个选项都没有,折腾了俩小时,最后放弃,从以前的电脑里考过来一个4GB的sqlserver2008R2,安装了一个小时后终于能够登录了,还是原版靠谱啊!不过为毛VS和sqlserver都这么大啊,VS2013有6个G,sqlserver2008有4.5个G,里面都装了什么好东西哇?

    5. 安装的这段时间里,无聊看了一会赵建宇讲的简单工厂设计模式,他的另外一期里的两个设计模式视频都只有声音,屏幕不动,只能先看这个了。

    6. 这个模式的核心就是需要一个抽象父类,产品的类纷纷去实现它,然后用一个算是工厂的函数,输入参数,把产品子类赋值给了抽象父类(用到了里氏转换)。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace _00练习
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             string brand = Console.ReadLine();
    14             Computer c = Test(brand);
    15             c.SayHello();
    16             Console.ReadKey();
    17         }
    18         static Computer Test(string brand)
    19         {
    20             Computer c = null;
    21             switch (brand)
    22             {
    23                 case "Lenovo":
    24                     c = new Lenovo();
    25                     break;
    26                 case "Dell":
    27                     c = new Dell();
    28                     break;
    29                 case "IBM":
    30                     c = new IBM();
    31                     break;
    32             }
    33             return c;
    34         }
    35 
    36     }
    37 
    38     abstract class Computer
    39     {
    40         public abstract void SayHello();
    41     }
    42 
    43 
    44     class Lenovo : Computer
    45     {
    46         public override void SayHello()
    47         {
    48             Console.WriteLine("我是联想");
    49         }
    50     }
    51     class Dell : Computer
    52     {
    53         public override void SayHello()
    54         {
    55             Console.WriteLine("我是戴尔");
    56         }
    57     }
    58     class IBM : Computer
    59     {
    60         public override void SayHello()
    61         {
    62             Console.WriteLine("我是IBM");
    63         }
    64     }
    65 }
  • 相关阅读:
    osip2 代码分析
    批处理命令——call 和 start
    在VS2010 VC++项目中引用Lib静态库(以Openssl为例)
    Gerrit 代码审核服务器的工作流和原理
    crucible VS gerrit
    领导者/追随者(Leader/Followers)模型和半同步/半异步(half-sync/half-async)模型都是常用的客户-服务器编程模型
    半同步半异步I/O的设计模式(half sync/half async)
    高并发系统设计
    通过Nginx反向代理之后客户端验证码session不一致造成无法验证通过的问题解决
    使用Nodpad++正则替换
  • 原文地址:https://www.cnblogs.com/Jacklovely/p/8711079.html
Copyright © 2011-2022 走看看