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 }
  • 相关阅读:
    php 计算两点地理坐标的距离
    objective-c中#import和@class的差别
    我与小娜(07):量子通信的奥
    OpenStack部署到Hadoop的四种方案
    iOS UI13_数据解析XML_,JSON
    Redis集群
    《AndroidStudio有用指南》反馈问题和建议
    numpy函数库中一些经常使用函数的记录
    1015 history grep |mysql
    php 生成压缩文件
  • 原文地址:https://www.cnblogs.com/Jacklovely/p/8711079.html
Copyright © 2011-2022 走看看