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

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

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可以更好规范类的行为。当你在修改和维护时都有极大的方便。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航