一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - asp.net 組合模式的一個例子

asp.net 組合模式的一個例子

2020-01-16 15:14ASP.NET教程網(wǎng) ASP.NET教程

asp.net 組合模式的一個例子,方便學(xué)習(xí)asp.net的朋友作為參考

代碼如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
namespace Test 

class Program 

static void Main(string[] args) 

var customer = new Customer 

IsActive = true, 
LateFees = 100M, 
TotalRentNumber = 10 
}; 
Console.WriteLine(customer.CanRent()); 
Console.ReadKey(); 


public interface ISpecification<T> 

/// <summary> 
/// 是否可以租賃 
/// </summary> 
bool IsSatisfiedBy(T entity); 
/// <summary> 
/// 與操作 
/// </summary> 
ISpecification<T> And(ISpecification<T> other); 
/// <summary> 
/// 否操作 
/// </summary> 
ISpecification<T> Not(); 

/// <summary> 
/// 基類 
/// </summary> 
public abstract class CompositeSpecification<T> : ISpecification<T> 

public abstract bool IsSatisfiedBy(T candidate); 
public ISpecification<T> And(ISpecification<T> other) 

return new AndSpecification<T>(this, other); 

public ISpecification<T> Not() 

return new NotSpecification<T>(this); 


/// <summary> 
/// 與操作 
/// </summary> 
public class AndSpecification<T> : CompositeSpecification<T> 

private ISpecification<T> leftSpecification; 
private ISpecification<T> rightSpecification; 
public AndSpecification(ISpecification<T> leftSpecification, ISpecification<T> rightSpecification) 

this.leftSpecification = leftSpecification; 
this.rightSpecification = rightSpecification; 

public override bool IsSatisfiedBy(T entity) 

return leftSpecification.IsSatisfiedBy(entity) && rightSpecification.IsSatisfiedBy(entity); 


///<summary> 
///否操作 
/// </summary> 
public class NotSpecification<T> : CompositeSpecification<T> 

private ISpecification<T> innerSpecification; 
public NotSpecification(ISpecification<T> innerSpecification) 

this.innerSpecification = innerSpecification; 

public override bool IsSatisfiedBy(T entity) 

return !innerSpecification.IsSatisfiedBy(entity); 


/// <summary> 
/// 是否達(dá)到最大的規(guī)定租賃數(shù) 
/// </summary> 
public class HasReachedMaxSpecification : CompositeSpecification<Customer> 

public override bool IsSatisfiedBy(Customer entity) 

return entity.TotalRentNumber > 5; 


/// <summary> 
/// 是否激活 
/// </summary> 
public class CustomerActiveSpecification : CompositeSpecification<Customer> 

public override bool IsSatisfiedBy(Customer entity) 

return entity.IsActive; 


/// <summary> 
/// 是否欠費 
/// </summary> 
public class CustomerHasLateFeesSpecification : CompositeSpecification<Customer> 

public override bool IsSatisfiedBy(Customer entity) 

return entity.LateFees > 0; 


public class Customer 

private ISpecification<Customer> hasReachedRentalThreshold; 
private ISpecification<Customer> customerIsActive; 
private ISpecification<Customer> customerHasLateFees; 
public Customer() 

hasReachedRentalThreshold = new HasReachedMaxSpecification(); 
customerIsActive = new CustomerActiveSpecification(); 
customerHasLateFees = new CustomerHasLateFeesSpecification(); 

/// <summary> 
/// 用戶租賃DVD數(shù)量 
/// </summary> 
public int TotalRentNumber 

get; 
set; 

/// <summary> 
/// 賬戶是否激活 
/// </summary> 
public bool IsActive 

get; 
set; 

/// <summary> 
/// 用戶之前是否還欠費 
/// </summary> 
public decimal LateFees 

get; 
set; 

public bool CanRent() 

ISpecification<Customer> canRent = customerIsActive.And(hasReachedRentalThreshold.Not()).And(customerHasLateFees.Not()); 
return canRent.IsSatisfiedBy(this); 


延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美视频免费 | 国产在线精品一区二区高清不卡 | 日本粉色视频 | 国产美女做爰免费视频网址 | 青青成人在线 | 亚洲欧美在线免费观看 | 1024国产高清精品推荐 | 亚洲日本在线观看网址 | 男人猛进女人屁股免费 | 草莓视频丝瓜 | 精品女同一区二区三区免费站 | 免费的伦理片 | 欧美日韩第二页 | 日韩福利网站 | 2019国内自拍 | 国色天香社区在线视频免费观看 | 国产三区二区 | pregnantxxx孕交 | 日韩在线 在线播放 | 四虎影业| 亚洲高清无在码在线电影 | 香蕉精品| 男人都懂www深夜免费网站 | 欧美精品一区二区三区免费播放 | 黑人巨大精品战中国美女 | 王淑兰与铁柱全文免费阅读 | 日本视频免费在线观看 | 国产白白视频在线观看2 | 欧美作爱福利免费观看视频 | 我被黄总征服的全过程 | 日本全黄三级在线观看 | 国产精品成人一区二区1 | 午夜精品久视频在线观看 | 精品国产乱码久久久久久免费 | 男人晚上适合偷偷看的污污 | 四虎在线精品免费高清在线 | 日韩精品中文字幕视频一区 | 我的好妈妈7中字在线观看韩国 | 波多野结衣在线观看中文字幕 | 摸进老太婆的裤裆小说 | 色多多在线观看视频 |