static void Main(string[] args)
        {
            var products = new List <Product>()
            {
                new Product()
                {
                    Name = "Product 1", Price = 1
                },
                new Product()
                {
                    Name = "Product 2", Price = 2
                },
                new Product()
                {
                    Name = "Product 3", Price = 3
                },
                new Product()
                {
                    Name = "Product 4", Price = 4
                },
                new Product()
                {
                    Name = "Product 5", Price = 5
                },
                new Product()
                {
                    Name = "Product 6", Price = 6
                },
                new Product()
                {
                    Name = "Product 7", Price = 7
                },
                new Product()
                {
                    Name = "Product 8", Price = 8
                }
            };

            var productStockReportBuilder  = new ProductStockReportBuilder(products);
            var productStockReportDirector = new ProductStockReportDirector(productStockReportBuilder);

            productStockReportDirector.BuilReport();
            var report = productStockReportBuilder.GetReport();

            Console.WriteLine(report);

            Console.ReadKey();
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            //Console.WriteLine("Hello World!");
            var _products = new List <Product>
            {
                new Product {
                    ProductID = 1, ProductName = "Benny", ProductPrice = 3500
                }
            };

            var _builder  = new ProductStockReportBuilder(_products);
            var _director = new ProductStockReportDirector(_builder);

            _director.BuildStockReport();

            var _reports = _builder.GetReport();

            Console.WriteLine(_reports);
            Console.ReadKey();
        }
        public static void Builder()
        {
            var products = new List <Product>
            {
                new Product {
                    Name = "Monitor", Price = 200.50
                },
                new Product {
                    Name = "Mouse", Price = 20.41
                },
                new Product {
                    Name = "Keyboard", Price = 30.15
                }
            };

            var builder  = new ProductStockReportBuilder(products);
            var director = new ProductStockReportDirector(builder);

            director.BuildStockReport();

            var report = builder.GetReport();

            Console.WriteLine(report);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("");
            #region ProgramVariants
            string[] qsn =
            {
                "0-Programdan Çık",
                "1-Sigleton Design Pattern",
                "2-Concept Model",
                "3-Supper Class",
                "4-Factory Design Pattern",
                "5-Factory Design Pattern (Başka bir örnek : Hesaplama)",
                "6-Service Locator Pattern ",
                "7-Builder Design Pattern"
            };
            for (int i = 1; i <= qsn.Length; i++)
            {
                Console.WriteLine("{0} : {1} örneği", i - 1, qsn[i - 1]);
            }
step1:
            string chosen = Console.ReadLine();
            double selectedId;
            bool   girilenDeger = double.TryParse(chosen, out selectedId);
            if (!girilenDeger)
            {
                Console.WriteLine("Girilen değer hatalı.\nBir seçenek seçip ilerleyin!\n");

                goto step1;
            }
            #endregion

            ////  Bu bölüm de, ilerleyen derslerde bir "Design Pattern" örneği ile refactoring ediliebilir!



            switch (selectedId)
            {
                #region ExitCase
            case 0:
                Environment.Exit(0);
                break;
                //Console.WriteLine("Hatalı seçim.\nBir seçenek seçip ilerleyin!");
                //Main(args);
                //return;
                #endregion ExitCase

                #region SingleTon

            case 1:
                /////       Singleton
                ///  Sadece tek bir objenin tekrar tekrar kullanılacağı durumlarda(örn;logger, bidirimler gibi) kullanılıyor.
                //  GetInstance methodu ile aynı obje tekrar tekrar kullanılabilir.. Örnek;
                Logger log  = Logger.GetInstance;
                Logger log2 = Logger.GetInstance;
                Console.WriteLine("Log1 : {0}", log.GetHashCode());
                Console.WriteLine("Log2 : {0}", log2.GetHashCode());
                /////////           instance kodlarının aynı olduğunu görebiliriz.
                ///
                break;
                #endregion SingleTon

                #region ConceptModel

            case 2:
                // Örnek
                var eg1 = new Person("*****@*****.**", "Muammer K.", new Pop3Mail());
                eg1.KullaniciyiBilgilendir();
                Console.WriteLine("Bu işlemin Hash Kodu'si : {0}\n{1}\n", eg1.GetHashCode(), "-----------------");

                // Örnek  - Tek satırda işlem tamamlanabilir
                var eg2 = new Person("*****@*****.**", "Alice S.", new SmtpMail());
                eg2.KullaniciyiBilgilendir();
                Console.WriteLine("Bu işlemin Hash Kodu'si : {0}\n{1}\n", eg2.GetHashCode(), "-----------------");

                break;

                #endregion ConceptModel

                #region superClass
            case 3:
                /////       Superclass
                Console.WriteLine("-------- Super Clas ----");
                ClassAile obj = new ClassAile();
                obj.Soyisim = "Taha";
                obj.Yemek();
                Console.WriteLine("");
                ///



                Console.WriteLine("-------- Super Class with Sub Class----");
                ClassAile obj2 = new ClassBirey("Yusuf", "Çocuk");
                obj2.Soyisim = "Taha";
                obj2.Yemek();
                Console.WriteLine("");
                ///


                Console.WriteLine("-------- Super Clas ----");
                ClassBirey obj3 = new ClassBirey("Cemal", "Baba");
                obj3.Soyisim = "Taha";
                obj3.Yemek();
                break;
                #endregion superClass


                #region FactoryDesign
            case 4:
                //abstract factory için Örnek1
                BaglantiCreator  baglantiFabrikasi         = new BaglantiCreator();
                BaglantiAbstract mmongoDb_abstract_inherit = baglantiFabrikasi.FactoryMethodum(Baglantilar.MongoDb);
                mmongoDb_abstract_inherit.BaglantiKur();

                //interface kullanım ile ÖRnek1
                IBaglanti mysql_interface = new MySqlIF();
                mysql_interface.BaglantiKur();
                //interface kullanım ile Örnek1
                IBaglanti oracle_interface = new OracleIF();
                oracle_interface.BaglantiKur();
                Console.WriteLine("\n\n");

                break;

                #endregion FactoryDesign

                #region MoreFactoryDesign
            case 5:
                ////            Interface + factory pattern ile Örnek2 |  Hesaplama / dört işlem)
                Console.WriteLine("Hesaplama yapmak için aşağıdaki değerlerden bir tanesini girin.\n\n1:Topla işlemi \n2:Cikarma işlemi \n3:Bölme işlemi \n4:Çarpma işlemi ");

                DortIslem    diEnum;
                var          girilen   = Enum.TryParse <DortIslem>(Console.ReadLine(), out diEnum);
                IHesaplayıcı hesaplama = new HesaplamaFactory().HesaplayiciFactoryMethod(diEnum);
                Console.WriteLine("Şimdi Birinci Değeri Girin::");
                var deger1 = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Şimdi İkinci Değeri Girin::");
                var deger2 = Convert.ToDouble(Console.ReadLine());
                hesaplama.Hesapla(deger1, deger2);
                break;
                #endregion MoreFactoryDesign

                #region ServiceLocator
            case 6:
                //loc => locator => bulan, bulucu!
                IServiceLocator loc     = new ServiceLocator();
                IServiceB       servisa = loc.GetService <IServiceB>();
                Console.WriteLine($"Servis cevabı : {servisa.GetName()}");
                break;
                #endregion ServiceLocator


                #region  BuilderPattern
            case 7:
                /// kaynak : https://code-maze.com/builder-design-pattern/
                var product = new List <Product>
                {
                    new Product {
                        Name = "Monitor", Price = 200.50
                    },
                    new Product {
                        Name = "Mouse", Price = 20.41
                    },
                    new Product {
                        Name = "Keyboard", Price = 30.15
                    }
                };
                var builder  = new ProductStockReportBuilder(product);
                var director = new ProductStockReportDirector(builder);
                director.BuildStockReport();

                var report = builder.GetReport();
                Console.WriteLine(report);

                break;

                #endregion BuilderPattern
            default:
                Console.WriteLine("Hatalı seçim.\nBir seçenek seçip ilerleyin!");
                Console.ReadLine();
                //Main(args);
                break;
            }

            Console.WriteLine("\n\r");
            Console.WriteLine("Programı kapatmak için Escape tuşuna basın.");
            Console.WriteLine("\n\r");

            ConsoleKeyInfo escExpect = Console.ReadKey();
            if (escExpect.Key != ConsoleKey.Escape)
            {
                Main(args);
            }
            else
            {
                Environment.Exit(0);
            }
            //Console.ReadLine();
            //Console.ReadLine();
        }