ZengCode.Com (The Thai Php Framework)  


Home   Download   Manual   About us    

Facebook   


MAIN MENU
News
Php Tips
Android Programming
Design Pattern By PHP
C# using Linq น่าใช้จริงๆ
C# Tips & Technique
C# Design Pattern
Linux Quick Tips
Java & JavaScript Tips
Database & SQL
ZengCode Framework Guide
Zeng Code Code
Programming
IPhone (Tips and Trick)

Download เอกสารที่น่าสนใจ

     Builder Pattern  (2010-03-15)

Factory Method ที่ทำหน้าที่สร้าง Object ของ Class ที่ต่างกันแต่มี Super Class เดียวกันมาแล้ว ซึ่งเราทราบแล้วว่าการที่ Object ที่ถูกสร้างจาก Factory Method ต้องมาจาก Super Class เดียวกันนั้น ถือเป็นข้อจำกัดอันหนึ่งของ Factory Method ในบางโอกาส เราจำเป็นต้องใช้ Object ที่เกิดจากการรวมตัวกนของหลาย ๆ objectการรวมหลาย ๆ object เข้าด้วยกัน ซึ่ง Design Pattern ที่เหมาะแก่การนำไปใช้เพื่อสร้าง Object ในลักษณะนี่เรียกว่า “Builder”

 

 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());

 

 


Comment
Name
Comment
Security CodeCAPTCHA Image

easy tracking
avis car rental discount code

This page took 0.367820 seconds to load.