Jumat, 12 April 2013

Design Pattern Abstract Factory dengan bahasa pemrograman CSharp

langsung saja penjelasan dari Abstract Factory Pattern : 
 

Abstrak Factory Pettern di berguna ketika klien perlu membuat objek yang saling berkaitan. Jika kita perlu menciptakan keluarga obyek terkait atau tergantung, maka kita dapat menggunakan Abstrak Factory Pettern. Pettern ini sangat berguna ketika klien tidak tahu persis apa jenis untuk menciptakan. Sebagai contoh, katakanlah Showroom khusus menjual ponsel mendapat permintaan untuk ponsel pintar buatan Samsung. Di sini kita tidak tahu dengan tepat jenis objek yang akan dibuat (dengan asumsi semua informasi untuk telepon dibungkus dalam bentuk benda konkret). Tapi kita tahu bahwa kita sedang mencari ponsel pintar yang diproduksi oleh Samsung. Informasi ini sebenarnya dapat dimanfaatkan jika desain kami memiliki implementasi Abstrak Factory. Jadi dengan ide Abstract Factory Pettern Abstrak, sekarang kita akan mencoba untuk membuat sebuah desain yang akan memfasilitasi penciptaan obyek terkait. Kami akan pergi ke depan dan menulis sebuah aplikasi sederhana untuk skenario baru saja kita bicarakan.

berikut adalah contoh program menggunakan bahasa pemrograman CSharp (C#) :


using System;

using System.Collections.Generic;

using System.Text;



namespace AbstractFactoryDemo

{

    class Program

    {

        static void Main(string[] args)

        {

            PhoneTypeChecker checker = new PhoneTypeChecker(MANUFACTURERS.SAMSUNG);



            checker.CheckProducts();



            Console.ReadLine();



            checker = new PhoneTypeChecker(MANUFACTURERS.HTC);



            checker.CheckProducts();

            Console.ReadLine();



            checker = new PhoneTypeChecker(MANUFACTURERS.NOKIA);



            checker.CheckProducts();

            Console.Read();

        }

    }





    interface IPhoneFactory

    {

        ISmart GetSmart();

        IDumb GetDumb();

    }



    class SamsungFactory : IPhoneFactory

    {

        public ISmart GetSmart()

        {

            return new GalaxyS2();

        }



        public IDumb GetDumb()

        {

            return new Primo();

        }

    }



    class HTCFactory : IPhoneFactory

    {

        public ISmart GetSmart()

        {

            return new Titan();

        }



        public IDumb GetDumb()

        {

            return new Genie();

        }

    }



    class NokiaFactory : IPhoneFactory

    {

        public ISmart GetSmart()

        {

            return new Lumia();

        }



        public IDumb GetDumb()

        {

            return new Asha();

        }

    }



    class Lumia : ISmart

    {

        public string Name()

        {

            return "Lumia";

        }

    }



    class Asha : IDumb

    {

        public string Name()

        {

            return "Asha";

        }

    }



    interface ISmart

    {

        string Name();

    }



    class GalaxyS2 : ISmart

    {

        public string Name()

        {

            return "GalaxyS2";

        }

    }



    class Primo : IDumb

    {

        public string Name()

        {

            return "Blue";

        }

    }



    interface IDumb

    {

        string Name();

    }



    class Titan : ISmart

    {

        public string Name()

        {

            return "Titan";

        }

    }



    class Genie : IDumb

    {

        public string Name()

        {

            return "Genie";

        }

    }



    enum MANUFACTURERS

    {

        SAMSUNG,

        HTC,

        NOKIA

    }

    class PhoneTypeChecker

    {

    

        IPhoneFactory factory;

        MANUFACTURERS manu;



        public PhoneTypeChecker(MANUFACTURERS m)

        {

            manu = m;

        }



        public void CheckProducts()

        {

            switch (manu)

            {

                case MANUFACTURERS.SAMSUNG:

                    factory = new SamsungFactory();

                    break;

                case MANUFACTURERS.HTC:

                    factory = new HTCFactory();

                    break;

                case MANUFACTURERS.NOKIA:

                    factory = new NokiaFactory();

                    break;

            }



            Console.WriteLine(manu.ToString() + ":\nSmart Phone: " + factory.GetSmart().Name() + "\nDumb Phone: " + factory.GetDumb().Name());

        }

    }

}

0 komentar:

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More