我讀wiki article有關推介營銷,但這不足以讓我瞭解您的業務。
- 什麼是您的案例推薦優惠?
- 你正試圖解決什麼樣的問題?您的應用程序的目標?
- 是推介提供發佈商特定?
- 多個發佈商可以爲某個特定推介優惠帶來哪些人員?
將嘗試以反映代碼的一些想法。
請記住 - 我對商業領域知之甚少。
忽略/忽略巨大詳細信息的數量(例如可能出現的技術困難,甚至與推介成爲發佈商時的域相關的事情)。
但希望 - 這可能會給你一些想法。
public class Publisher:Root{}
/*
I believe it's a root, because multiple publishers can
bring referrals to one particular referral offer
it could be modeled as entity if offers were given for
publishers individually
it's certainly not a value object, because we care about identity
of particular offer disregarding it's state.
I'm ignoring possibility that there might be various incentives
with common structure/behavior
*/
public class ReferralOffer:Root{
public bool IsActive(){
return _startedOn.AddMonths(-_lengthInMonths)>DateTime.Now;
}
public void BringReferral(string referralName, Publisher boughtBy){
if (IsActive()) _referrals.Add(new Referral(referralName,boughtBy));
}
private List<Referral> _referrals;
public void SendBucksToLuckyBastards(IMoneyTransferService mts){
if (!IsActive()&&!_awardsSent){
_referrals.SelectMany(r=>r.BoughtBy)
.ForEach(p=>mts.SendToPublisher(p,_award));
_awardsSent=true;
}
}
public ReferralOffer(Money award, int lengthInMonths){
_award=award;
_lengthInMonths=lengthInMonths;
_startedOn=DateTime.Now;
}
//assuming it's amount for each referral and not total
private Money _award;
private int _lengthInMonths;
private DateTime _startedOn;
private bool _awardsSent;
}
/*
referral - person who is bought by publisher and who eventually
might become a publisher
if referral automatically becomes a publisher - likely this should
be modeled otherwise
entity, because it makes no sense w/o referral offer
*/
public class Referral:Entity{
public Publisher BoughtBy{get; private set;}
public string Name{get; private set;}
//internal, because only offer constructs them
internal Referral(string name,Publisher boughtBy){
BoughtBy=boughtBy;
Name=name;
}
}
var me=publisherRepository.ByFullName("Arnis Lapsa");
var offer=new ReferralOffer(200,2);
offer.BringReferral(me, "kamal");
//two months later
offer.SendBucksToLuckyBastards(moneyTransferService);
請記住 - 此代碼僅用於幫助您。這遠非好事。
嘗試徹底理解代碼,並且參見影響每行代碼都會產生。
附:批評是一如既往的歡迎
Refferal優惠就像我們給出版商的獎勵,如果他在我們的網站上以出版商身份購買任何人。優惠通常包含給予購買他人的人一些錢。 Refferal優惠不是特定的發佈商,如果某人根據優惠邀請另一個人獲得款項,則該優惠有效期爲一段時間。幾天後,報價解散併產生新的報價。發佈者可以將任何數字os人員作爲發佈者。我無法將發佈商和優惠之間的關聯關聯起來。我是否以單獨的實體創建報價或發佈發佈商 – kamal 2010-12-14 20:14:35
@kamal更新了我的回答 – 2010-12-14 21:57:57
RefferalOFFer中的Refferal是什麼,我指的是它包含的內容。發佈商是否有列表。 public void SendBucksToLuckyBastards(IMoneyTransferService mts)。我想知道如何在域中使用服務。 –
kamal
2010-12-16 19:40:21