一小时学会几种设计模式
来源:互联网 发布:linux内核编程实例 编辑:程序博客网 时间:2024/06/05 05:57
设计模式很多种,如果看理论,是能理解了,但离使用还很远。现在有几个实例代码,整理了一下,1小时搞定。
NET常用设计模式——工厂模式
工厂模式
- 存在一个创建对象的工厂
- 调用者从中取得特别的对象
- 由工厂决定如何符合调用需求
- 客户不知道对象如何生成
应用示列(一)
using System;
namespace CSDesingPattern
{
public enum UserType { Employee = 0, Sales = 1, Guest = 2 }
public class User
{
protected string mPermissionLevel = "Z";
public string GetPermissionLevel()
{
return mPermissionLevel;
}
}
public class Employee : User
{
public Employee()
{
mPermissionLevel = "A";
}
}
public class Sales : User
{
public Sales()
{
mPermissionLevel = "B";
}
}
public class Guest : User
{
public Guest()
{
mPermissionLevel = "C";
}
}
//工厂类
public class FactoryCreater
{
public FactoryCreater() { }
public static User CreateUser(UserType userType)
{
User u;
switch (userType)
{
case UserType.Employee:
u = new Employee();
break;
case UserType.Sales:
u = new Sales();
break;
case UserType.Guest:
u = new Guest();
break;
default:
u = new User();
break;
};
return u;
}
static void Main(string[] args)
{
Console.WriteLine("请输入使用者类型{0,1,2}");
UserType t = (UserType)int.Parse(Console.ReadLine());
User newUser = FactoryCreater.CreateUser(t);
Console.WriteLine("建立了{0}对象", newUser.ToString());
Console.WriteLine("权限等级={0}", newUser.GetPermissionLevel());
}
}
}
namespace CSDesingPattern
{
public enum UserType { Employee = 0, Sales = 1, Guest = 2 }
public class User
{
protected string mPermissionLevel = "Z";
public string GetPermissionLevel()
{
return mPermissionLevel;
}
}
public class Employee : User
{
public Employee()
{
mPermissionLevel = "A";
}
}
public class Sales : User
{
public Sales()
{
mPermissionLevel = "B";
}
}
public class Guest : User
{
public Guest()
{
mPermissionLevel = "C";
}
}
//工厂类
public class FactoryCreater
{
public FactoryCreater() { }
public static User CreateUser(UserType userType)
{
User u;
switch (userType)
{
case UserType.Employee:
u = new Employee();
break;
case UserType.Sales:
u = new Sales();
break;
case UserType.Guest:
u = new Guest();
break;
default:
u = new User();
break;
};
return u;
}
static void Main(string[] args)
{
Console.WriteLine("请输入使用者类型{0,1,2}");
UserType t = (UserType)int.Parse(Console.ReadLine());
User newUser = FactoryCreater.CreateUser(t);
Console.WriteLine("建立了{0}对象", newUser.ToString());
Console.WriteLine("权限等级={0}", newUser.GetPermissionLevel());
}
}
}
应用示例(二)
using System;
namespace NameFactory
{
//名字工厂类
public class NameFactory
{
public NameFactory() { }
public Namer getName(string name)
{
int i = name.IndexOf(",");
if (i > 0)
return new LastFirst(name);
else
return new FirstFirst(name);
}
}
public class Namer
{
//parts stored here
protected string frName, lName;
//return first name
public string getFrname()
{
return frName;
}
//return last name
public string getLname()
{
return lName;
}
}
public class FirstFirst : Namer
{
public FirstFirst(string name)
{
int i = name.IndexOf(" ");
if (i > 0)
{
frName = name.Substring(0, i).Trim();
lName = name.Substring(i + 1).Trim();
}
else
{
lName = name;
frName = "";
}
}
}
public class LastFirst : Namer
{
public LastFirst(string name)
{
int i = name.IndexOf(",");
if (i > 0)
{
lName = name.Substring(0, i);
frName = name.Substring(i + 1).Trim();
}
else
{
lName = name;
frName = "";
}
}
}
}
namespace NameFactory
{
//名字工厂类
public class NameFactory
{
public NameFactory() { }
public Namer getName(string name)
{
int i = name.IndexOf(",");
if (i > 0)
return new LastFirst(name);
else
return new FirstFirst(name);
}
}
public class Namer
{
//parts stored here
protected string frName, lName;
//return first name
public string getFrname()
{
return frName;
}
//return last name
public string getLname()
{
return lName;
}
}
public class FirstFirst : Namer
{
public FirstFirst(string name)
{
int i = name.IndexOf(" ");
if (i > 0)
{
frName = name.Substring(0, i).Trim();
lName = name.Substring(i + 1).Trim();
}
else
{
lName = name;
frName = "";
}
}
}
public class LastFirst : Namer
{
public LastFirst(string name)
{
int i = name.IndexOf(",");
if (i > 0)
{
lName = name.Substring(0, i);
frName = name.Substring(i + 1).Trim();
}
else
{
lName = name;
frName = "";
}
}
}
}
- 一小时学会几种设计模式
- 摘自 一小时学会python
- 一小时学会python
- 一小时学会SQL
- 一小时学会搭建网站
- 几种设计模式
- 几种设计模式
- 几种设计模式
- 几种设计模式
- 几种设计模式
- 几种设计模式
- 几种设计模式
- 在一小时内学会 C#。
- 设计模式主要几种
- java 几种设计模式
- java 几种设计模式
- 几种设计模式概念
- iOS 几种设计模式
- 字符串的驻留(String Interning)
- .NET与J2EE只能是敌人吗
- 针对构架师的.NET 3.0介绍
- 将自定义.NET控件嵌入IE浏览器
- 漫长的学车历程胜利结束,总结路考夜考步骤
- 一小时学会几种设计模式
- 军衔
- 给TreeView设置背景图片-------即将TreeView的背景设为透明的方法
- 第一篇
- NET常用设计模式——单件模式
- 让SortTable和Asp.net Ajax和睦相处
- 关于Debug和Release之本质区别的讨论
- 如何让WebServer返回指的定XML内容
- 如何用XML实现高效管理数据