algorytm.org

Implementacja w C#



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Metoda wytwórcza (factory method) - Implementacja w C#
Ocena użytkownikóww: *****  / 6
SłabyŚwietny
Nadesłany przez Kamil Dworak, 20 sierpnia 2010 22:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

c#.cs:
/****************************************
* Wzorzec Projektowy Factody Method		*
* (metoda fabrykujaca) 					*
* www.algorytm.org						*
* Opracowal Dworak Kamil 				*
*****************************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication5
{
    /* nasz uogolniony produkt */
    abstract class Czekolada {

            protected String about;

            public abstract Czekolada dawajCzekolade();
            
            protected void dodajeKakao(){
		        Console.WriteLine("Dodaje kakao...");
	        }
        }

    /* bardziej konkretny produkt  #1*/
    class Mleczna : Czekolada {
	        public Mleczna(){
		        about = "Mleczna";
	        }

	        public void dodajeMleko(){
		        Console.WriteLine("Dodaje mleko...");
	        }
        	
	        public void dodajeCukier(){
		        Console.WriteLine("Dodaje cukier...");
	        }
        	
	        public override Czekolada dawajCzekolade(){
		        Console.WriteLine(about);
		        dodajeKakao();
		        dodajeCukier();
		        dodajeMleko();
		        return this;
	        }
    }

    /* bardziej konkretny produkt  #2*/
    class ZOrzechamiIBakaliami : Czekolada{
	        public ZOrzechamiIBakaliami(){
		        about = "Z orzechami i bakaliami";
	        }

	        public void dodajeOrzechy(){
                Console.WriteLine("Dodaje orzechy...");
	        }
        	
	        public void dodajeBakalie(){
                Console.WriteLine("Dodaje bakalie...");
	        }
        	
	        public void dodajeCukier(){
                Console.WriteLine("Dodaje cukier...");
	        }
        	
	        public override Czekolada dawajCzekolade(){
                Console.WriteLine(about);
		        dodajeKakao();
		        dodajeCukier();
		        dodajeOrzechy();
		        dodajeBakalie();
		        return this;
	        }
    }

    /* bardziej konkretny produkt  #3*/
    class Gorzka : Czekolada {
	        public Gorzka(){
		        about = "Gorzka";
	        }
        	
	        public void dodajeEkstratWaniliowy(){
                Console.WriteLine("Dodaje ekstrat waniliowy...");
	        }
        	
	        public override Czekolada dawajCzekolade(){
                Console.WriteLine(about);
		        dodajeKakao();
		        dodajeEkstratWaniliowy();
		        return this;
	        }
    }

    /* nasz stworca */
    class ProducentCzekolady
    {
            public Czekolada produkcjaCzekolady(String about)
            {
                Czekolada czekolada = null;

                /* teraz decyduje o tym, ktora czekolade wytworzy */
                if (about.Equals("Mleczna"))
                {
                    czekolada = new Mleczna();
                }
                else if (about.Equals("Z orzechami i bakaliami"))
                {
                    czekolada = new ZOrzechamiIBakaliami();
                }
                else if (about.Equals("Gorzka"))
                {
                    czekolada = new Gorzka();
                }
                return czekolada.dawajCzekolade();
            }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ProducentCzekolady producent = new ProducentCzekolady();
		    Czekolada[] tab = new Czekolada[3];
    		
		    tab[0] = producent.produkcjaCzekolady("Gorzka");
            Console.WriteLine("--------------------------------------------------------------");
		    tab[1] = producent.produkcjaCzekolady("Z orzechami i bakaliami");
		    Console.WriteLine("--------------------------------------------------------------");
		    tab[2] = producent.produkcjaCzekolady("Mleczna");
            Console.ReadLine();
        }
    }
}
Dodaj komentarz