Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace wzorce
- {
- public class Adapter
- {
- }
- public interface INapoj
- {
- string GetNazwa();
- double GetCena();
- }
- public class Espresso : INapoj
- {
- string _name = "Espresso";
- double _price = 4.99;
- //
- // klasa implementuje interfejs (2 metody, wystarczy że będą zwracać "espresso" i 4.99)
- //
- public double GetCena()
- {
- return _price;
- }
- public string GetNazwa()
- {
- return _name;
- }
- }
- public class Herbata : INapoj
- {
- string _name = "Herbata";
- double _price = 4.99;
- //
- // klasa implementuje interfejs (2 metody, wystarczy że będą zwracać "espresso" i 4.99)
- //
- public double GetCena()
- {
- return _price;
- }
- public string GetNazwa()
- {
- return _name;
- }
- }
- //
- // Herbata, klasa podobna do Espresso
- //
- public abstract class Decorator : INapoj
- {
- INapoj _napoj;
- protected string _name;
- protected double _price;
- //
- // deklaracja potrzebnych atrybutów
- //
- public Decorator(INapoj napoj)
- {
- _napoj = napoj;
- }
- public string GetNazwa()
- {
- return string.Format("{0}, {1}", _napoj.GetNazwa(), _name);
- }
- public double GetCena()
- {
- return _price + _napoj.GetCena();
- }
- }
- public class Cukier : Decorator
- {
- public Cukier(INapoj napoj) : base(napoj)
- {
- _name = "cukier";
- _price = 3.33;
- }
- }
- public class SyropCzekoladowy : Decorator
- {
- public SyropCzekoladowy(INapoj napoj) : base(napoj)
- {
- _name = "syrop czekoladowy";
- _price = 2.27;
- }
- }
- public class Mleko : Decorator
- {
- public Mleko(INapoj napoj) : base(napoj)
- {
- _name = "mleko";
- _price = 1.00;
- }
- }
- public class SpienioneMleko : Decorator
- {
- public SpienioneMleko(INapoj napoj) : base(napoj)
- {
- _name = "spienione mleko";
- _price = 1.30;
- }
- }
- public class Piana : Decorator
- {
- public Piana(INapoj napoj) : base(napoj)
- {
- _name = "piana";
- _price = 1.30;
- }
- }
- //
- // definicja dla poszczególnych składników
- //
- public class Adap
- {
- public void Main()
- {
- // stworzenie obiektu
- // wypisanie na konsoli co to jest
- var kawa_cappuccino = new Mleko(new Piana(new Espresso()));
- Console.WriteLine("{0} - cena: {1} zł", kawa_cappuccino.GetNazwa(), kawa_cappuccino.GetCena());
- Console.WriteLine();
- var kawa_mocha = new Mleko(new SyropCzekoladowy(new Espresso()));
- Console.WriteLine("Mocha:");
- Console.WriteLine(String.Format("Nazwa: {0} - cena {1}", kawa_mocha.GetNazwa(), kawa_mocha.GetCena()));
- // wypisanie składników i cen
- Console.WriteLine();
- var herbata_bawarka = new Mleko(new Herbata());
- Console.WriteLine("Herbata:");
- Console.WriteLine(String.Format("Nazwa: {0}", herbata_bawarka.GetNazwa()));
- Console.WriteLine(String.Format("Cena: {0}", herbata_bawarka.GetCena().ToString()));
- // wypisanie na konsoli co to jest
- // wypisanie składników i cen
- /* A TO NIE ZADZIAŁA - NIE można mieszać kawy i herbaty!
- var herbata_z_kawa = new Espresso(new Herbata());
- */
- Console.ReadLine() ;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement