C#.NET / Design Patterns / Design Patterns: Factory
![]() |
![]() |
➪ Das Factory--Pattern .... Gestartet wird über Factorydemo.Run().
class Factorydemo
{
/// <summary>Allgemeines Produkt</summary>
class Buch
{
private string titel, genre, autor, verlag;
private int erscheinungsjahr;
public Buch()
{
}
public virtual string Titel
{ get => titel; set => titel = value; }
public virtual string Genre
{ get => genre; set => genre = value; }
public virtual string Verlag
{ get => verlag; set => verlag = value; }
public virtual string Autor
{ get => autor; set => autor = value; }
public virtual int Erscheinungsjahr
{ get => erscheinungsjahr;
set => erscheinungsjahr = value;
}
public override string ToString()
{
return $"Titel: {Titel}, Autor: {Autor},
Genre: {Genre}, Verlag: {Verlag},
Erscheinungsjahr: {Erscheinungsjahr}";
}
}
/// <summary>Konkretes Buch</summary>
class Krimi : Buch
{
public Krimi()
{
Genre = "Krimi";
}
}
/// <summary>Konkretes Buch</summary>
class Fachbuch : Buch
{
public Fachbuch()
{
Genre = "Fachbuch";
}
}
/// <summary>abstrakter Erzeuger</summary>
abstract class Verlag
{
private string verlag;
public Verlag(string verlagname)
{
verlag = verlagname;
}
public Buch BuchAusliefern(string autor,
string titel,
string genre, int jahr)
{
Buch buch = new Buch { Autor = autor,
Verlag = verlag,
Titel = titel,
Genre = genre,
Erscheinungsjahr = jahr };
return buch;
}
public Krimi KrimiAusliefern(string autor,
string titel, int jahr)
{
Krimi buch = new Krimi {
Autor = autor,
Verlag = verlag,
Titel = titel,
Erscheinungsjahr = jahr };
return buch;
}
public Fachbuch FachbuchAusliefern(string autor,
string titel,
int jahr)
{
Fachbuch buch = new Fachbuch {
Autor = autor,
Verlag=verlag,
Titel = titel,
Erscheinungsjahr = jahr };
return buch;
}
}
/// <summary>konkreter Erzeuger</summary>
class KonkreterVerlag : Verlag
{
public KonkreterVerlag(string verlagname)
: base(verlagname)
{
}
}
public static void Run()
{
KonkreterVerlag v = new KonkreterVerlag("2 und 3");
Buch k = v.BuchAusliefern("Karl May",
"Das Kapital",
"Reiseroman", 1912);
Console.WriteLine(k);
Console.WriteLine(v.FachbuchAusliefern(
"Boris Pasternak",
"Dr. Schiwago",
1958));
Console.WriteLine(v.KrimiAusliefern(
"Arthur Conan Doyle",
"Eine Studie in Scharlachrot",
1900));
Console.WriteLine(v.FachbuchAusliefern(
"Jürgen Burmester",
"Fachkunde Metall",
2017));
}
}
wg / 4. April 2021
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de