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);
}
}
}
-
jQuery中的read和JavaScript中的onload函数的区别在哪
在JavaScript中,onload函数是最经常使用的,几乎涉及到JavaScript的童鞋都少不了要接触它。这个函数的作用就是等待网页完全装载完了以后再去执行代码块内的语句,因为按照文档流的执行顺序,通常用于头部加载JavaScript的`时候需要用到。复制代码代码如下:ad=functio...
-
javascript中setInterval的用法总结
javascript中的setInterval的函数主要是在制作动画或其他间隔性渲染(操作)效果时,对操作方法按照一定时间间隔进行调用的函数。setInterval的表达式格式主要有:setInterval(fnname,time,par1,par2,);setInterval(obj,fnname,time,par1,par2,);第一种是最常见的表达...
-
如何理解Javascript的caller,callee,call,apply区别
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:argumentsarguments该对象代表正在执行的函数和调用它的函数的参数。[function.]arguments[n]参数function:选项。当前正在执行的Function对象的名字。n:选项。要传递给Function对象的从0开始的参数值...
-
JavaScript 函数表达式
JavaScript中创建函数主要有两种方法:函数声明和函数表达式。这两种方式都有不同的适用场景。这篇笔记主要关注的是函数表达式的几大特点以及它的使用场景,下面一一描述。主要特点可选的函数名称函数名称是函数声明的必需组成部分,这个函数名称相当于一个变量,新定...