當前位置:才華齋>設計>網頁設計>

asp.net 組合模式的PHP程式碼

網頁設計 閱讀(6.43K)

複製程式碼 程式碼如下:

asp.net 組合模式的PHP程式碼

using System;

using ric;

using ;

using ;

namespace Test

{

class Program

{

static void Main(string[] args)

{

var customer = new Customer

{

IsActive = true,

LateFees = 100M,

TotalRentNumber = 10

};

eLine(ent());

Key();

}

}

public interface ISpecification

{

///

/// 是否可以租賃

///

bool IsSatisfiedBy(T entity);

///

/// 與操作

///

ISpecificationAnd(ISpecificationother);

///

/// 否操作

///

ISpecificationNot();

}

///

/// 基類

///

public abstract class CompositeSpecification: ISpecification

{

public abstract bool IsSatisfiedBy(T candidate);

public ISpecificationAnd(ISpecificationother)

{

return new AndSpecification(this, other);

}

public ISpecificationNot()

{

return new NotSpecification(this);

}

}

///

/// 與操作

///

public class AndSpecification: CompositeSpecification

{

private ISpecificationleftSpecification;

private ISpecificationrightSpecification;

public AndSpecification(ISpecificationleftSpecification, ISpecificationrightSpecification)

{

Specification = leftSpecification;

tSpecification = rightSpecification;

}

public override bool IsSatisfiedBy(T entity)

{

return tisfiedBy(entity) && tisfiedBy(entity);

}

}

///

///否操作

///

public class NotSpecification: CompositeSpecification

{

private ISpecificationinnerSpecification;

public NotSpecification(ISpecificationinnerSpecification)

{

rSpecification = innerSpecification;

}

public override bool IsSatisfiedBy(T entity)

{

return !tisfiedBy(entity);

}

}

///

/// 是否達到最大的規定租賃數

///

public class HasReachedMaxSpecification : CompositeSpecification

{

public override bool IsSatisfiedBy(Customer entity)

{

return lRentNumber > 5;

}

}

///

/// 是否啟用

///

public class CustomerActiveSpecification : CompositeSpecification

{

public override bool IsSatisfiedBy(Customer entity)

{

return tive;

}

}

///

/// 是否欠費

///

public class CustomerHasLateFeesSpecification : CompositeSpecification

{

public override bool IsSatisfiedBy(Customer entity)

{

return Fees > 0;

}

}

public class Customer

{

private ISpecificationhasReachedRentalThreshold;

private ISpecificationcustomerIsActive;

private ISpecificationcustomerHasLateFees;

public Customer()

{

hasReachedRentalThreshold = new HasReachedMaxSpecification();

customerIsActive = new CustomerActiveSpecification();

customerHasLateFees = new CustomerHasLateFeesSpecification();

}

///

/// 使用者租賃DVD數量

///

public int TotalRentNumber

{

get;

set;

}

///

/// 賬戶是否啟用

///

public bool IsActive

{

get;

set;

}

///

/// 使用者之前是否還欠費

///

public decimal LateFees

{

get;

set;

}

public bool CanRent()

{

ISpecificationcanRent = (())(());

return tisfiedBy(this);

}

}

}