Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace WzorzecDekorator{
- public interface INapoj{
- string GetNazwa();
- double GetCena();
- }
- public class Espresso : INapoj
- {
- public string GetNazwa()
- {
- return "espresso";
- }
- public double GetCena()
- {
- return 4.99;
- }
- }
- public class Herbata : INapoj
- {
- public double GetCena()
- {
- return 5.99;
- }
- public string GetNazwa()
- {
- return "herbata";
- }
- }
- public abstract class Decorator : INapoj{
- INapoj _napoj;
- protected string _nazwa;
- protected double _price;
- public Decorator(INapoj napoj){
- _napoj = napoj;
- }
- public string GetNazwa(){
- return string.Format("{0}, {1}", _napoj.GetNazwa(), _nazwa);
- }
- public double GetCena(){
- return _price+_napoj.GetCena();
- }
- }
- public class Cukier:Decorator{
- public Cukier(INapoj napoj) : base(napoj){
- _nazwa = "cukier";
- _price = 0.50;
- }
- }
- public class Mleko:Decorator
- {
- public Mleko(INapoj napoj) : base(napoj)
- {
- _nazwa = "mleko";
- _price = 0.99;
- }
- }
- public class SpienioneMleko:Decorator
- {
- public SpienioneMleko(INapoj napoj) : base(napoj)
- {
- _nazwa = "spienione mleko";
- _price = 1.29;
- }
- }
- public class SyropCzekoladowy:Decorator
- {
- public SyropCzekoladowy(INapoj napoj) : base(napoj)
- {
- _nazwa = "syrop czekoladowy";
- _price = 0.70;
- }
- }
- class Program{
- static void Main(string[] args){
- var kawa_cappuccino = new SpienioneMleko(new Mleko(new Espresso()));
- Console.WriteLine("Cappuccino:");
- Console.WriteLine("{0} - cena: {1} zł", kawa_cappuccino.GetNazwa(), kawa_cappuccino.GetCena() );
- Console.WriteLine();
- var kawa_mocha = new SpienioneMleko(new Mleko(new SyropCzekoladowy(new Espresso())));
- Console.WriteLine("Mocha:");
- Console.WriteLine("{0} - cena: {1} zł", kawa_mocha.GetNazwa(), kawa_mocha.GetCena() );
- Console.WriteLine();
- var herbata_bawarka = new Mleko(new Herbata());
- Console.WriteLine("Bawarka:");
- Console.WriteLine("{0} - cena: {1} zł", herbata_bawarka.GetNazwa(), herbata_bawarka.GetCena() );
- /* A TO NIE ZADZIAŁA - NIE można mieszać kawy i herbaty!
- var herbata_z_kawa = new Espresso(new Herbata());
- */
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement