最近做的项目中要将PMS系统接口提供给两个不同的系统。一个是VB6 ,VB.Net开发的。

由于VB6只能传送string(那位同僚坚决只传送字符串,自己拼XML--在此俺就不说了)

另一情况就是PMS中不同的Category对外只开放一个简单类型的对象。普通会员,公司会员,中介对外就是一个MemberInfo对象。

我要根据String生成不同的Ctgy对象。例如传一个字符串"CC02"--生成普通会员对象给PMS。

CustomerCategory 是一个抽象类。下面的都是他的派生类。所以方法就针对抽象类编程。

那么俺就做了个适配器,返回CustomerCategory:

Code

写一个CategoryMethod包含所有的对象生成方法

      public CustomerCategory WebPmsBookingCard(MemberManInfo info)
        {
            CstCtgyBookingCard ctgy 
= new CstCtgyBookingCard();
            MemberManInfo crsmaninfo 
= new MemberManInfo();
          
                
if (info != null)
                {
                    ctgy.CardNo 
= info.CardNo;
                    ctgy.Id 
= info.Id;
                    ctgy.LevelId 
= info.LevelId;
                    ctgy.Info 
= GetSheetGuest(info);
                }
            
            
return ctgy;
        }

        
public CustomerCategory WebPmsAgency(MemberManInfo info)
        {
            CstCtgyAgency ctgy 
= new CstCtgyAgency();
            MemberManInfo crsmaninfo 
= new MemberManInfo();
           
                
if (info!= null)
                {
                    ctgy.AgencyId 
= crsmaninfo.Id;
                    ctgy.Name 
= crsmaninfo.MemberName;
                }
            
            
return ctgy;
        }

在此就贴出其中的几个方法

在调用的时候通过下面的方法转换成不同的 

//categoryInfo 转换
if (Entity.ManInfo != null && !string.IsNullOrEmpty(Entity.ManInfo.CatogroyType))
{
    CgryAdapter.CRSCtgyDelegate mydelegate 
=
                    CgryAdapter.CrsDelegateMethor(Entity.ManInfo.CatogroyType);
    
if (mydelegate != null)
     {
         CustomerCategory PMSCategory 
= mydelegate(Entity.ManInfo);
         sheet.CategoryInfo 
= PMSCategory;
     }
     
else
     {
         sheet.CategoryInfo 
= new CstCtgyNonMember();
     }
}

Entity.ManInfo.CatogroyType 就是其他两个系统传过来的 Catogroy 类型的字符串。

判断字典中是否有该Catogroy 类型的委托。有我就直接将MemberManInfo类型的对象直接转换为了PMS系统中的相应的对象。

以后我们要添加一个不同的Catogroy,在CategoryMethod中添加对应的方法,CgryAdapter中给字典添加对应的string类型的Catogroy类型,相应的委托。

提供的方法无需变更。