.
, ( )
IThing ThingFactory.
IThing ( ConcreteThing).
Factory.
ThingFactory.CreateThing( ).
, AmericanConcreteThing. , . , -, .
EuropeanThing, TexasAmericanThing - .
, , :
ThingFactory.CreateThing( )
TexasAmericanThing: IThing.
, ThingFactory,
public static IThing CreateThing(Account a)
{
return new AmericanThing();
}
to
public static IThing CreateThing(Account a)
{
if (a.State == State.TEXAS) return new TexasAmericanThing();
return new AmericanThing();
}