Design patterns
FAST
Sök…
Introduktion
Vad är SOLID?
SOLID är en mnemonisk (minnehjälp) akronym. De solida principerna bör hjälpa mjukvaruutvecklare att undvika "kodlukt" och bör leda till god källkod. Bra sourcecode betyder i detta sammanhang att sourcecoden är lätt att utöka och underhålla. Huvudfokus för de solida principerna är klasser
Vad du kan förvänta:
Varför du bör använda SOLID
Hur man använder de fem SOLID-principerna (exempel)
SRP - Enskilt ansvarsprincip
S in SOLID står för Single ansvar-principen (SRP).
Ansvar innebär i detta sammanhang skäl att förändras, så principen säger att en klass endast ska ha en anledning att ändra.
Robert C. Martin uttalade det (under sin föreläsning på Yale shool of management 10 september 2014) enligt följande
Du kan också säga, placera inte funktioner som ändras av olika skäl i samma klass.
eller
Blanda inte problem i dina klasser
Anledning att tillämpa SRP:
När du ändrar en klass kan du påverka funktionalitet relaterad till klassen. Att hålla ansvaret på en låg nivå minimerar risken för biverkningar.
Dåligt exempel
Vi har ett gränssnitt IWallet och en Wallet-klass som implementerar IWallet. Plånboken har våra pengar och varumärket, dessutom bör den skriva ut våra pengar som strängrepresentation. Klassen används av
- en webbtjänst
- en textförfattare som skriver ut pengarna i euro till en textfil.
SRP är här kränkt eftersom vi har två problem:
- Lagring av pengar och varumärke
- Representationen av pengarna.
C # exempelkod
public interface IWallet
{
void setBrand(string brand);
string getBrand();
void setMoney(decimal money);
decimal getMoney();
string printMoney();
}
public class Wallet : IWallet
{
private decimal m_Money;
private string m_Brand;
public string getBrand()
{
return m_Brand;
}
public decimal getMoney()
{
return m_Money;
}
public void setBrand(string brand)
{
m_Brand = brand;
}
public void setMoney(decimal money)
{
m_Money = money;
}
public string printMoney()
{
return m_Money.ToString();
}
}
Bra exempel
För att undvika överträdelsen av SRP, tog vi bort metoden printMoney
från klassen Plånbok och placerade den i en skrivarklass. Skrivarklassen ansvarar nu för utskriften och plånboken ansvarar nu för att lagra värdena.
C # exempelkod
public interface IPrinter
{
void printMoney(decimal money);
}
public class EuroPrinter : IPrinter
{
public void printMoney(decimal money)
{
//print euro
}
}
public class DollarPrinter : IPrinter
{
public void printMoney(decimal money)
{
//print Dollar
}
}
public interface IWallet
{
void setBrand(string brand);
string getBrand();
void setMoney(decimal money);
decimal getMoney();
}
public class Wallet : IWallet
{
private decimal m_Money;
private string m_Brand;
public string getBrand()
{
return m_Brand;
}
public decimal getMoney()
{
return m_Money;
}
public void setBrand(string brand)
{
m_Brand = brand;
}
public void setMoney(decimal money)
{
m_Money = money;
}
}