<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            asp.net 組合模式的PHP代碼

            時間:2024-10-07 12:35:26 ASP 我要投稿
            • 相關推薦

            asp.net 組合模式的PHP代碼

              復制代碼 代碼如下:

              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

              {

              ///

              /// 是否可以租賃

              ///

              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)

              {

              this.leftSpecification = leftSpecification;

              this.rightSpecification = rightSpecification;

              }

              public override bool IsSatisfiedBy(T entity)

              {

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

              }

              }

              ///

              ///否操作

              ///

              public class NotSpecification: CompositeSpecification

              {

              private ISpecificationinnerSpecification;

              public NotSpecification(ISpecificationinnerSpecification)

              {

              this.innerSpecification = innerSpecification;

              }

              public override bool IsSatisfiedBy(T entity)

              {

              return !innerSpecification.IsSatisfiedBy(entity);

              }

              }

              ///

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

              ///

              public class HasReachedMaxSpecification : CompositeSpecification

              {

              public override bool IsSatisfiedBy(Customer entity)

              {

              return entity.TotalRentNumber > 5;

              }

              }

              ///

              /// 是否激活

              ///

              public class CustomerActiveSpecification : CompositeSpecification

              {

              public override bool IsSatisfiedBy(Customer entity)

              {

              return entity.IsActive;

              }

              }

              ///

              /// 是否欠費

              ///

              public class CustomerHasLateFeesSpecification : CompositeSpecification

              {

              public override bool IsSatisfiedBy(Customer entity)

              {

              return entity.LateFees > 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 = customerIsActive.And(hasReachedRentalThreshold.Not()).And(customerHasLateFees.Not());

              return canRent.IsSatisfiedBy(this);

              }

              }

              }

            【asp.net 組合模式的PHP代碼】相關文章:

            php數組函數序列之array-combine() - 數組合并函數的代碼08-25

            php如何過濾危險html代碼09-21

            將php實現過濾UBB代碼09-11

            php對圖像的各種處理函數代碼總結07-03

            如何在cmd下面寫php代碼01-22

            ASP.NET連SQL7接口的源代碼06-06

            PHP url 加密解密函數代碼方法10-25

            企業薪酬設計基本模式及組合模式02-26

            關于PHP var-dump遍歷對象屬性的函數與應用代碼06-21

            關于ASP.NET使用JavaScript顯示信息提示窗口實現原理及代碼05-09

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看