用Command模式来规范系统中各业务类的行为!

类别:.NET开发 点击:0 评论:0 推荐:

平时少写文章,不知道从何入手,先让我们看下代码吧。

public interface IBusiness
 {
  HFSoft.Data.DomainObjects.ObjectManager DataUnit
  {
   get;
   set;
  }
  void RunBusiness();
 }这是一件业务规则,由她来规范所有业务的执行,当定义了这样一个规范后,所有的业务类都有了一下统一的行为,在调用,修改和维护都带来极大的方便,因为所有业务的行为都是固定在某一方法上。

为了方便使用定义IBusiness的Adapter
abstract public class BusinessBase : IBusiness
 {
  public BusinessBase()
  {
   mDataUnit = new HFSoft.Data.DomainObjects.ObjectManager(new HFSoft.Data.SqlClient.SqlSession());
   mDataUnit.DataSession.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
  }
  public HFSoft.Data.DomainObjects.ObjectManager DataUnit
  {
   get
   {
    return mDataUnit;
   }
   set
   {
    mDataUnit = value;
   }
  }
  public virtual void  RunBusiness()
  {
  }
  private HFSoft.Data.DomainObjects.ObjectManager mDataUnit;
 }
再从BusinessBase 派生出一个Template
abstract public class SearchBusiness : BusinessBase
 {
  protected abstract System.Type EntityType
  {
   get;
  }
  protected HFSoft.Data.DataObjects.FilterCollection  Filters
  {
   get
   {
    return mFilters;
   }
   set
   {
    mFilters = value;
   }
  }
  private HFSoft.Data.DataObjects.FilterCollection mFilters = new HFSoft.Data.DataObjects.FilterCollection();
 }

从SearchBusiness 派生出具体业务类

根据USERID获取用户信息
public class GetUserByID : SearchBusiness
 {
  public string UserID
  {
   get
   {
    return mUserID;
   }
   set
   {
    mUserID = value;
   }
  }
  public BBS.Library.Entitys.User UserItem
  {
   get
   {
    return mUserItem;
   }
   set
   {
    mUserItem = value;
   }
  }
  private string mUserID;
  private BBS.Library.Entitys.User mUserItem;
  protected override System.Type EntityType
  {
   get
   {
    return typeof(Entitys.User);
   }
  }

  public override void RunBusiness()
  {
   Filters.EqualTo(Entitys.User.F_UserID,UserID);
   this.UserItem = DataUnit.GetObject(EntityType,Filters) as Entitys.User;
   base.RunBusiness ();
  }

 }
---------------------------------------------------------------------
获取验证后的用户信息

public class UserLogin : GetUserByID
 {
  public string UserPWD
  {
   get
   {
    return mUserPWD;
   }
   set
   {
    mUserPWD = value;
   }
  }
  private string mUserPWD;
  public override void RunBusiness()
  {
   Filters.EqualTo(Entitys.User.F_UserPWD,UserPWD);
   base.RunBusiness ();
  }

 }

当类有了一个统一的规则之后,那修改和维护都相对简单,因为你知道他错在那里。
有一本书时说到“它把函数层面的任务提升到了类的层面。这简单值是对面向对象的亵渎”
我自己感觉并不是这样,当类是单一职责的情况,Comman可以更好规范类的行为。当你在修改和维护时都有极大的方便。

本文地址:http://com.8s8s.com/it/it44108.htm