我已經創建了一個服務數據訪問層,其中有數據需要來自多個數據庫。如何正確實施具有兩個界面的戰略模式?
我在一個數據庫中做得很好,我在其中定義了包含成員詳細信息的memberRepository
。但是,現在我必須獲取存儲在另一個數據庫中的與會話相關的詳細信息。
OprationContracts:
IMemberServices
包含GetLoggedInBuddies(int profileID);
ISessionServices
包含GetProfileIDFromSessionID(string sessionID);
我的服務類:
public class MemberService : IMemberService, ISessionServices
{
#region Strategy pattern configuration
//
// Member repo
//
private MemberRepository memberRepository;
public MemberService()
: this(new MemberRepository())
{ }
public MemberService(MemberRepository memberRepository)
{
this.memberRepository = memberRepository;
}
//
// Session repo
//
private SessionRepository sessionRepository;
public MemberService() : this(new SessionRepository()){}
public MemberService(SessionRepository sessionRepository)
{
this.sessionRepository = sessionRepository;
}
#endregion
/// <summary>
/// Session-related details are maintained in the Secondary database
/// </summary>
/// <param name="sessionID"></param>
/// <returns></returns>
public int GetProfileIDFromSessionID(string sessionID)
{
int sessionProfileID = sessionRepository.GetProfileDetailsFromSessionID(sessionRepository);
return sessionProfileID;
}
/// <summary>
/// Try profileID = 1150526
/// </summary>
/// <param name="profileID"></param>
public void GetLoggedInBuddies(int profileID)
{
memberRepository.GetLoggedInBuddies(profileID);
//return memberRepository.GetLoggedInBuddies(profileID);
}
的問題是,在// Session Repo
部分,因爲我已經定義了一個構造函數。我明白了。
所以在每個方法基本上我想要做這樣的事情
MemberService useSessionRepo = new MemberService(SessionRepository);
useSessionRepo.GetProfileDetailsFromSessionID(...);
MemberService useMemberRepo = new MemberService(MemberRepository);
useMemberRepo.GetLoggedInBuddies(...);
只需要一隻手放在了一起。
謝謝。
它是一個答案或問題?如果它是答案,則標記它。 – AlexT 2012-04-28 09:32:04