ПАТТЕРН «SPECIFICATION» Презентацию подготовил студент 245 группы Математико - механического факультета СПбГУ Мусаев Мехти
«Specification» (« Спецификация ») – шаблон поведения приложения. Классифицируется на Hard Coded Specification, Parameterized Specification. Название и классификация
1. Когда надо выбрать подмножество объектов на основе некоторого критерия, и обновлять выбранное время от времени. 2. Когда надо проверить, что только соответствующие объекты используются для определенной роли 3. Когда надо описать что должен делать объект без описания деталей ( как объект это делает ). Назначение
Мотивация Applicant Class Fields: isQualitifiedForloan Properties: Age, CreditRating, Id, TotalEquity ApplicantLoanSpecification Class Methods: IsSatisfiedBy ISpecification Generic Interface Methods: IsSatisfiedBy
Код public interface ISpecification { bool IsSatisfiedBy(object candidate); } ISpecification.cs : public interface ISpecification { bool IsSatisfiedBy(T candidate); } ApplicantLoanSpecification.cs : public class ApplicantLoanSpecification : ISpecification { public bool IsSatisfiedBy(Applicant candidate) { return (candidate.CreditRating == 10 && candidate.TotalEquity > 45000); }
Код Application.cs : public class Applicant { public Int32 Id { get; set; } public 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); }
Применимость Задача про трейдера.
Родственные паттерны Strategy Interpreter