当前位置: 首页 > news >正文

.NET 设计模式初探

最近,正在抓紧时间看.NET的视频,期末考试结束了,整个人也散了,找不到什么正经的事情干,没事就在实验室泡着,学习一下各方各面的知识,拓展一下思路和知识,感觉不错,呵呵。
    下面是在听WebCast的设计模式的视频时,实现的例子,比较简单,具体对模式的理解和应用还很需要深入……
using System;
namespace CSDesignPattern
{
 public enum UserType{Employee=0, Sales=1, Guest=2};//声明一个枚举,三种类型的用户
 public class User
 {
  protected string level = "Z"; //权限级别
  public string GetLevel()      //得到该用户权限,默认为Z
  {
   return level;
  }
 }
 
 public class Employee : User //继承,重新设定级别
 {
  public Employee()
  {
   level = "A";
  }
 }
 public class Sales : User
 {
  public Sales()
  {
   level = "B";
  }
 }
 public class Guest : User
 {
  public Guest()
  {
   level = "C";
  }
 }
 public class FactoryCreator
 {
  public FactoryCreator(){}

  public static User  CreateUser(UserType userType)  //根据用户类型初始化不同的用户
  {  
   User u = null;
   switch(userType) 
   {
    case UserType.Employee:
     u = new Employee();
     break;
    case UserType.Sales:
     u = new Sales();
     break;
    case UserType.Guest:
     u = new Guest();
     break;
   };
   return u;
  }
  static void Main(string[] args)
  {
   Console.WriteLine("Input Type");
   UserType t = (UserType)int.Parse(Console.ReadLine());
   User newUser = FactoryCreator.CreateUser(t);
   Console.WriteLine("Create an object:{0}" ,newUser.ToString());
   Console.WriteLine("Level = {0}",newUser.GetLevel());
   Console.ReadLine();
  }
 }
}



本文转自 august 51CTO博客,原文链接:http://blog.51cto.com/august/6903,如需转载请自行联系原作者

相关文章:

  • DatabaseMetaData的用法(转)
  • bash组织成树型数据结构
  • CentOS 5.4 通过yum升级php到5.3版本的两种方
  • Nginx之不能解析下载站顶部和底部的inc文件
  • 【转】 iphone开发常用代码
  • 学习笔记 124: 预备知识总结
  • Js参数值中含有单引号或双引号解决办法
  • 学习笔记 十五: mariadb
  • mysql 优化几个注意点(非完全统计)
  • Python中的tuple
  • MySQL都有哪些日志?分别都代表什么?
  • Centos 7.4 安装ipython和mysql-python遇到的问题
  • Windows XP SP3 升级故障汇总
  • 【VC+图像】图片批量处理
  • SVN 的使用(一) 命令行模式
  • go语言学习初探(一)
  • idea + plantuml 画流程图
  • Java-详解HashMap
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • nodejs:开发并发布一个nodejs包
  • Redis 懒删除(lazy free)简史
  • SpringCloud集成分布式事务LCN (一)
  • Travix是如何部署应用程序到Kubernetes上的
  • uva 10370 Above Average
  • win10下安装mysql5.7
  • 解析带emoji和链接的聊天系统消息
  • 使用Swoole加速Laravel(正式环境中)
  • 小程序01:wepy框架整合iview webapp UI
  • 责任链模式的两种实现
  • 主流的CSS水平和垂直居中技术大全
  • 字符串匹配基础上
  • 阿里云服务器如何修改远程端口?
  • 扩展资源服务器解决oauth2 性能瓶颈
  • #if 1...#endif
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (1)(1.13) SiK无线电高级配置(六)
  • (7)STL算法之交换赋值
  • (翻译)terry crowley: 写给程序员
  • (四) 虚拟摄像头vivi体验
  • (转)大型网站架构演变和知识体系
  • (转载)hibernate缓存
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .Net FrameWork总结
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @31省区市高考时间表来了,祝考试成功
  • @property括号内属性讲解
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [BZOJ] 2044: 三维导弹拦截
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]
  • [echarts] y轴不显示0
  • [Flutter]打包IPA
  • [HackMyVM]靶场Crossbow