Паттерн «Specification»

Слайд 2

«Specification» («Спецификация») – шаблон поведения приложения.
Классифицируется на Hard Coded Specification, Parameterized Specification.

Название

«Specification» («Спецификация») – шаблон поведения приложения. Классифицируется на Hard Coded Specification, Parameterized Specification. Название и классификация
и классификация

Слайд 3

Когда надо выбрать подмножество объектов на основе некоторого критерия, и обновлять выбранное

Когда надо выбрать подмножество объектов на основе некоторого критерия, и обновлять выбранное
время от времени.
Когда надо проверить, что только соответствующие объекты используются для определенной роли
Когда надо описать что должен делать объект без описания деталей (как объект это делает).

Назначение

Слайд 4

Мотивация

Мотивация

Слайд 5

Код

public interface ISpecification {
bool IsSatisfiedBy(object candidate);
}
ISpecification.cs :
public interface ISpecification {
bool IsSatisfiedBy(T

Код public interface ISpecification { bool IsSatisfiedBy(object candidate); } ISpecification.cs : public
candidate);
}
ApplicantLoanSpecification.cs :
public class ApplicantLoanSpecification : ISpecification {
public bool IsSatisfiedBy(Applicant candidate) {
return (candidate.CreditRating == 10 && candidate.TotalEquity > 45000);
}
}

Слайд 6

Код

Application.cs :
public class Applicant
{
public Int32 Id { get; set; }
public

Код Application.cs : public class Applicant { public Int32 Id { get;
Int32 Age { get; set; }
public Int32 CreditRating { get; set; }
public decimal TotalEquity { get; set; }
private readonly ApplicantLoanSpecification isQualitifiedForloan;
public Applicant()
{
isQualitifiedForloan = new ApplicantLoanSpecification();
}
public bool CanApplyForLoan()
{
return isQualitifiedForloan.IsSatisfiedBy(this);
}
}

Слайд 7

Применимость

Задача про трейдера.

Применимость Задача про трейдера.