12

Mai

Iluvõtted koodile IV

Marek Tihkan

Ilusaks on võimalik ka saada igasuguste maskidega, näiteks näo- või juustemaskiga. Staatiliselt tüübitud keeltes on ka tavaliselt seda silmas peetud ning loodud liidesed. Nende kasutamine teeb ilusamaks ja paindlikumaks ka arhitektuuri.

Liideste abiga saame objektide omavahelist siduvust vähendada. Teavad täpselt nii palju kui vaja. Mida väiksemaks nendega läheme, seda rohkem anname teada kavatusest ning ei pea kartma NotSupportedExceptionit.

public interface IConsume<TMessage>
{
  void Consume(TMessage message);
}

public interface ICanMakeCustomerPreferred
{
  void MakePreferred(Cutomer customer);
}

Need liidesed on küllaltki väiksed, kuid leidub ka veel väiksemaid. Neid nimetatakse tähistajateks.

public interface IAggregateRoot {}

Tihti on vajadus ka liideste järgi, mis on mitme parameetriga (generic) ning nende lugemine osutub raskemaks. Õnneks saab teha C#-s sisemisi klasse (nested types) ja selle abiga maskeerida raskesti loetavat koodi.

public interface IMessageHandler<TMessage, TResponse>
{
  TResponse Handle(TMessage message);
}

public class RespondsTo<TMessage>
{
  public interface With<TResponse> :
    IMessageHandler<TMessage, TResponse>
  {}

  public interface WithListOf<TResponse> :
    IMessageHandler<TMessage, IList<TResponse>>
  {}
}

public class AcceptedSalesOrdersMessageHandler :
  RespondsTo<AcceptedSalesOrdersMessage>.WithListOf<SalesOrder>
{
  public IList<SalesOrder> Handle(AcceptedSalesOrdersMessage message)
  {
     //...
  }
}

Kui olete ise liideste osas kasutanud võtteid, mida jagada soovite, siis kommentaarid on oodatud.

Meeldivat maskide kandmist!

Loe veel sarnastel teemadel:

  • Share/Bookmark

KATEGOORIAD » Arendus

SILDID » , ,

Lisa kommentaar

  • * Kuvatakse kommentaari juures
  • * Ei publitseerita