Сообщение Re: Фабрика объектов с разными конструкторами от 07.11.2016 11:28
Изменено 07.11.2016 11:32 ·
Здравствуйте, licedey, Вы писали:
L>Задача: реализовать IPaymentProcessor
Я бы как-то так сделал:
А следующим шагом я бы изменил IBusinessRule чтобы они ещё репортили ошибку c подробностями что случилось, а не просто true/false.
L>Задача: реализовать IPaymentProcessor
Я бы как-то так сделал:
public interface IBusinessRule
{
bool Validate();
}
class Rule1 : IBusinessRule
{
public Rule1(string name) { ... }
bool Validate() { ... }
}
class Rule2 : IBusinessRule
{
public Rule1(int month, int year) { ... }
bool Validate() { ... }
}
class CompositeBusinessRule : IBusinessRule
{
const IBusinessRule rules;
CompositeBusinessRule(IBusinessRule rules...) {this.rules = rules;}
bool Validate() {
foreach(var r in rules) if(!r.Validate()) { return false; }
return true;
}
}
interface IPaymentProcessor
{
bool MakePayment(CreditCard card);
}
class CreditCardValidatorFactory
{
IBusinessRule createValidation(CreditCard card)
{
return new CompositeBusinessRule(
new Rule1(card.Name),
new Rule2(card.Month, card.Year)
);
}
}
interface IPaymentProcessor
{
bool MakePayment(CreditCard card);
}
class MyPaymentProcess : IPaymentProcessor
{
const CreditCardValidatorFactory validatorFactory;
MyPaymentProcess(CreditCardValidatorFactory validatorFactory) { this.validatorFactory = validatorFactory;}
public bool MakePayment(CreditCard card)
{
IBusinessRule validator = validatorFactory.createValidation(card);
if(!validator.Validate()) { return false; }
return true;
}
}
А следующим шагом я бы изменил IBusinessRule чтобы они ещё репортили ошибку c подробностями что случилось, а не просто true/false.
Re: Фабрика объектов с разными конструкторами
Здравствуйте, licedey, Вы писали:
L>Задача: реализовать IPaymentProcessor
Я бы как-то так сделал:
А следующим шагом я бы изменил IBusinessRule чтобы они ещё репортили ошибку c подробностями что случилось, а не просто true/false.
ЗЫЖ Ninject — фтопку, как и все IoC-фреймворки.
L>Задача: реализовать IPaymentProcessor
Я бы как-то так сделал:
public interface IBusinessRule
{
bool Validate();
}
class Rule1 : IBusinessRule
{
public Rule1(string name) { ... }
bool Validate() { ... }
}
class Rule2 : IBusinessRule
{
public Rule1(int month, int year) { ... }
bool Validate() { ... }
}
class CompositeBusinessRule : IBusinessRule
{
const IBusinessRule rules;
CompositeBusinessRule(IBusinessRule rules...) {this.rules = rules;}
bool Validate() {
foreach(var r in rules) if(!r.Validate()) { return false; }
return true;
}
}
interface IPaymentProcessor
{
bool MakePayment(CreditCard card);
}
class CreditCardValidatorFactory
{
IBusinessRule createValidation(CreditCard card)
{
return new CompositeBusinessRule(
new Rule1(card.Name),
new Rule2(card.Month, card.Year)
);
}
}
interface IPaymentProcessor
{
bool MakePayment(CreditCard card);
}
class MyPaymentProcess : IPaymentProcessor
{
const CreditCardValidatorFactory validatorFactory;
MyPaymentProcess(CreditCardValidatorFactory validatorFactory) { this.validatorFactory = validatorFactory;}
public bool MakePayment(CreditCard card)
{
IBusinessRule validator = validatorFactory.createValidation(card);
if(!validator.Validate()) { return false; }
return true;
}
}
А следующим шагом я бы изменил IBusinessRule чтобы они ещё репортили ошибку c подробностями что случилось, а не просто true/false.
ЗЫЖ Ninject — фтопку, как и все IoC-фреймворки.