using System.Collections.Generic;
using System.Text;
namespace Test
{
static void Main (string[] args)
{
var customer = 新しい顧客
{
IsActive = true,
LateFees = 100M,
TotalRentNumber = 10
}; Console.ReadKey( ; /
/// AND 操作
/// I仕様
And(I仕様 other);
///
// / 操作なし
/ //
///
パブリック抽象クラスCompositeSpecify :
public abstract bool IsSatisfiedBy(T 候補);
public ISpecific other)
{
return new AndSpecific(this, other); ISpecific Not()
return new NotSpecific(this)
}
///
public クラスAnd仕様 : 複合仕様
プライベートI仕様
パブリックAnd仕様(I仕様 右仕様)
{左仕様 = leftSpecific ;
this.rightSpec = rightSpec
}
public override bool IsSatisfiedBy(T エンティティ)
{
return leftSpecific.IsSatisfiedBy(entity)
}
}
///
///操作なし
///
public class NotSpecific : CompositeSpecific
public NotSpecific
{ this .innerSpec = innerSpec
}
public override bool IsSatisfiedBy(Tentity)
{
return !innerSpec.IsSatisfiedBy(entity)
}
}
///
///数値に達しました
///
public class HasReachedMaxSpec : CompositeSpec
{
returnentity.TotalRentNumber >
// /
///
///
public class CustomerActiveSpecific : CompositeSpec
{
returnentity.IsActive; }
}
///
/// 支払い期限はありますか?
///
public オーバーライド bool IsSatisfiedBy(Customer エンティティ)
{
return エンティティ .LateFees >
}
public クラス Customer
private ISpecificえっ;
パブリック顧客()
{
hasReachedRentalThreshold = new HasReachedMaxSpecific();
customerHasLateFees = new CustomerHasLateFeesSpec();
///
///
public int TotalRentNumber
{
set;
///
///
public bool IsActive {
get;
}
// ;顧客> canRent = customerIsActive.And(hasReachedRentalThreshold.Not()).And(customerHasLateFees.Not());
}
http://www.bkjia.com/PHPjc/326154.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/326154.html技術記事代制番号如下: システムを使用します。 System.Collections.Generic を使用します。 System.Linq を使用します。 System.Text を使用します。 namespace Test { class Program { static void Main(string[] args) {...