Ejemplo n.º 1
0
        public override void Istek(SatisYetkisi satisyetkisi)
        {
            if (satisyetkisi.Yetki == true && satisyetkisi.Adet <= 100)
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("{0} Ödeme Onaylandı...", this.GetType().Name);
            }

            else if (successor != null)
            {
                successor.Istek(satisyetkisi);
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("{0} Ödeme Onaylanlanmadı...", this.GetType().Name);
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            //Chain Of Responcibility (COR) Kullanılıyor...

            //Senaryo aşağıdaki gibidir.
            //3 çeşit firma türümüz vardır.
            //Firma Türü Üretici ise satış adetinde bir üst limiti ve alt limiti yoktur. Sınırsız haklara sahiptir.
            //Firma Türü Toptancı ise maksimum satış adetinde sınır yoktur. Minimum satış adetindwki sınır 100 ilaçtır.
            //Firma Türü Perakende ise maksimum bir seferde 100 adet satış sınırı vardır. Minimum satış adeti sınırı yoktur.
            Console.Title = "Chain Of Responcibility (COR)";
            CORHandler toptanci  = new Toptanci();
            CORHandler perakende = new Perakende();
            CORHandler ureten    = new Ureten();

            //Toptancı en az 100 adet ürün satmalıdır. 10 adet ürün satamaz. Bu yüzden ödeme onaylanmadı.
            SatisYetkisi satis = new SatisYetkisi()
            {
                Adet = 10, Yetki = true
            };

            toptanci.Istek(satis);
            Console.WriteLine("Toptancı minimum 100 adet ürün satmalıdır. 10 adet ürün satamaz. Bu yüzden ödeme onaylanmadı.\n");

            satis = new SatisYetkisi()
            {
                Adet = 101, Yetki = true
            };
            perakende.Istek(satis);
            Console.WriteLine("Perakende maksimum 100 adet ürün satmalıdır. 101 adet ürün satamaz. Bu yüzden ödeme onaylanmadı.\n");

            Console.ForegroundColor = ConsoleColor.Magenta;
            Console.WriteLine("Successor metodu uygulanıyor...");
            //Toptancıya Üreten ile, Perakendeciye Toptancı ile aynı hakları tanımlamak adına Successor metodunu uyguluyoruz...
            toptanci.Successor(ureten);
            perakende.Successor(toptanci);
            Console.WriteLine("Successor metodu uygulandı...\n");

            satis = new SatisYetkisi()
            {
                Adet = 10, Yetki = true
            };
            perakende.Istek(satis);
            Console.WriteLine("Perakendenin kendi hakları da devam ettiği için 10 adet satışı onaylandı.\n");

            satis = new SatisYetkisi()
            {
                Adet = 10, Yetki = true
            };
            toptanci.Istek(satis);
            Console.WriteLine("Successor yetkilendirmesi ile Toptancı Üreten ile aynı haklara sahip oldu. Bu yüzden 10 adet satışı onaylandı.\n");

            satis = new SatisYetkisi()
            {
                Adet = 200, Yetki = true
            };
            perakende.Istek(satis);
            Console.WriteLine("Successor yetkilendirmesi ile Perakende Toptancı ile aynı haklara sahip oldu. Bu yüzden 200 adet satışı onaylandı.\n");

            satis = new SatisYetkisi()
            {
                Adet = 200, Yetki = false
            };
            perakende.Istek(satis);
            Console.WriteLine("Successor yetkilendirmesi ile Perakende Toptancı ile aynı haklara sahip olmasına rağmen Yetki değeri false verildiği için 200 adet satış onaylanmadı.");

            Console.ReadKey();

            //Chain Of Responcibility (COR) Kullanıldı...
        }
Ejemplo n.º 3
0
 public abstract void Istek(SatisYetkisi satisyetkisi);