|
namespace Builder
{
public abstract class Animal
{
public String name;
public String myFood;
public String leg;
public String animalType;
public String getInformation()
{
return "I am " + this.animalType +"\n"+this.leg+ "\n My name is " + this.name + "\n I eat an " + this.myFood;
}
}//Animal
public class Monkey : Animal
{
public Monkey()
{
this.animalType = "Monkey";
this.myFood = "Banana";
}
}//Monkey
public class Bird : Animal
{
public Bird()
{
this.animalType = "Bird";
this.myFood = "Worm";
}
}//Bird
public abstract class AnimalBuilder
{
public Animal aAnimal;
public abstract void BuildName(String name);
public abstract void BuildLeg();
}//AnimalBuilder
public class MonkeyBuilder : AnimalBuilder
{
public MonkeyBuilder()
{
aAnimal = new Monkey();
}
public override void BuildName(String name)
{
aAnimal.name = name;
}
public override void BuildLeg()
{
aAnimal.leg = "My leg was build for 4 legs "+MonkeyBuilderSpecial.MakeSpecial();
}
}//MonkeyBuilder
public class MonkeyBuilderSpecial
{
public static String MakeSpecial()
{
return ", but i can walk by 2 legs.";
}
}
public class BirdBuilder : AnimalBuilder
{
public BirdBuilder()
{
aAnimal = new Bird();
}
public override void BuildName(String name)
{
aAnimal.name = name;
}
public override void BuildLeg()
{
aAnimal.leg = "My leg was build for 2 legs";
}
}//MonkeyBuilder
public class AnimalConstructor
{
public String name {get; set;}
public void MakeAnimal(AnimalBuilder animalBuilder)
{
animalBuilder.BuildName(this.name);
animalBuilder.BuildLeg();
}
}
}//Builder
วิธีเรียกใช้ดังนี้ครับ
AnimalConstructor AnimalCon = new AnimalConstructor();
MonkeyBuilder monkey = new MonkeyBuilder();
AnimalCon.name = "jaekjaek";
AnimalCon.MakeAnimal(monkey);
MessageBox.Show(monkey.aAnimal.getInformation());
BirdBuilder bird = new BirdBuilder();
AnimalCon.name = "jibjib";
AnimalCon.MakeAnimal(bird);
MessageBox.Show(bird.aAnimal.getInformation());
|