一小时学会几种设计模式

设计模式很多种,如果看理论,是能理解了,但离使用还很远。现在有几个实例代码,整理了一下,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());
        }
    }
}


应用示例(二)



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 
=   "" ;
            }
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值