Anasayfa           Hakkımızda          İletişim     


Türkçe Dili English Language Germany Language English Language
  • Semih Tanış bir bağlantı paylaştı

    Design Pattern - Prototype(Clone) Design         Tarih : 25 Mart 2018 Pazar

    Design Pattern - Prototype Design

    Amaç  :  Nesne üretim maliyetlerini minimize etmektir. Her zaman prototype desgin'ini kullanamayız. Sadece ihtiyaçlar dahilinde kullabiliriz. 

    Örneğin :  Elimizde temel bir sınıf mevcut ise onun prototype'ini oluşturup o nesne üzerinden yeni nesne clone'lama sürecini sürdürebiliriz.

    Kodlar :  

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Prototype
    {
        class Program
        {
            static void Main(string[] args)
            {
                //yeni referans oluşturma maliyetinden kurtardık. new'lemek pahalı bir yöntemdir.
                Customer customer1  =  new Customer{FirstName = "Semih",LastName = "Tanış",City = "Bursa", Id = 1};
               
    
                var customer2 = (Customer)customer1.Clone();
                customer2.FirstName = "Salih";
    
                Console.WriteLine(customer1.FirstName);
                Console.WriteLine(customer2.FirstName);
                Console.ReadLine();
            }
        }
    
        public abstract class Person
        {
            public abstract Person Clone();
            public int Id { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
    
        }
    
        public class Customer : Person
        {
            public string City { get; set; }
    
            public override Person Clone()
            {
                return (Person) MemberwiseClone();
            }
        }
    
        public class Employee : Person
        {
            public decimal Salary { get; set; }
    
            public override Person Clone()
            {
                return (Person)MemberwiseClone();
            }
        }
    }
    

     

    Output :&nbs

  • Semih Tanış bir bağlantı paylaştı

    Design Pattern - Cross Cutting Concerns (Abstract Factory) Nedir ?         Tarih : 25 Mart 2018 Pazar

    Cross Cutting Concerns Nedir (Abstract Factory) ? 

    Görevi :  Toplu nesne kullanımı ihtiyaçlarında nesnenin kullanımını kolaylaştırmak, hemde özellikle standart nesnelere ihtiyaç duyuyorsak belirli durumlar için onlar için mantık oluştumak ve o mantığa göre nesne üretimini gerçekleştirmek.

    Örneğin :  İş katmanını düşünün. İş katmanında siz kodlarınızı yazarken, loglama kullanıyorsunuz, cache kullanıyorsunuz yani farklı teknikler kullanıyorsunuz. Bu kullandığınız tekniklerde kendi içinde çeşitlendirebiliyorsunuz. Örneğin loglamanın çeşitli yöntemleri var; veritabanına loglama, dosyaya loglama, console'a loglama. Cache'inde farklı yöntemleri var Memory Cache, MemCache ve Redis Cache gibi vb. 

    Yukarıdaki verdiğim örneklerle aşağıda bu işleri abstract factory ile nasıl uygulandığını göreceksiniz.

    Kodlar : 

    using System;
    
    namespace AbstractFactory
    {
        class Program
        {
            static void Main(string[] args)
            {
                ProductManager productManager =new ProductManager(new Factory1());
                productManager.GetAll();
                Console.ReadLine();
            }
        }
    
        public abstract class Logging
        {
            public abstract void Log(string message);
        }
    
        public class Log4NetLoggger: Logging
        {
            public override void Log(string message)
            {
                Console.WriteLine("Logged with Log4Net");
            }
        }
        public class NLoggger : Logging
        {
            public override void Log(string message)
            {
                Console.WriteLine("Logged with NLogger");
            }
        }
    
        public abstract class Caching
        {
            public abstract void Cache(string
                                                       
                             
                               
                                    
  • Semih Tanış bir bağlantı paylaştı

    SQL Türkçe Karekter fonksiyonu         Tarih : 17 Mart 2018 Cumartesi

    Merhaba Arkadaşlar ,

    Sql 'de herhangi bir alanı türkçeye çeviren sorgu fonksyionu aşağıdadır.

    Her zaman elinizin altında bulunması gereken fonksiyonlardan biridir. Sql 'de şifre veya kullanici adının türkçe karakter barındırmasını istemiyorsanız bu sorgu işinizi çok hafifletecektir.

    CREATE FUNCTION fn_turkcekarekterkaldir ( @ifade NVARCHAR(100) ) RETURNS NVARCHAR(100)
    AS
    BEGIN
    DECLARE @veri NVARCHAR(100)
      set @veri = @ifade
      set @veri = REPLACE(@veri,'İ','I')
      set @veri = REPLACE(@veri,'ı','I')
      set @veri = REPLACE(@veri,'Ş','S')
      set @veri = REPLACE(@veri,'Ç','C')
      set @veri = REPLACE(@veri,'Ö','O')
      set @veri = REPLACE(@veri,'Ğ','G')
      set @veri = REPLACE(@veri,'Ü','U')
      set @veri = REPLACE(@veri,'ş','S')
      set @veri = REPLACE(@veri,'ç','C')
      set @veri = REPLACE(@veri,'ö','O')
      set @veri = REPLACE(@veri,'ğ','G')
      set @veri = REPLACE(@veri,'ü','U')
     return (@veri)
    END

    Fonksiyonun çağırılması aşağıdaki gibidir.

    SELECT dbo.fn_turkcekarekterkaldir(a.Name)  FROM Account AS a

     

     

  • Semih Tanış bir bağlantı paylaştı

    Factory Desgin Pattern         Tarih : 10 Şubat 2018 Cumartesi

    Factory Desgin Pattern

    Factory Design Pattern günümüzde en çok kullanılan tasarım desenidir. Amaç yazılımı değişimi kontrol altında tutmaktır. Örneğin; Yazılımcıların zamanla kullandığı Cachleme sistemleri ve Loglama sistemlerine kadar değişkenlik göstrerecek zamanla farklı tekniklerin impelemtasyonunu gerçekleştirecek bir yapıyı barındırır.

    Örnek Kod:

    using System;
    
    namespace FactoryMethod
    {
        class Program
        {
            static void Main(string[] args)
            {
                CustomerManager customerManager = new CustomerManager(new LoggerFactory2()); // ben hangi teknikle çalışacaksam onu veriyorum.
                customerManager.Save();
                Console.ReadLine();
            }
        }
    
        public class LoggerFactory : ILoggerFactory
        {
            //Business to decide factory
            public ILogger CreateLogger()
            {
                return new LogSerim();
            }
    
    
        }
        public class LoggerFactory2 : ILoggerFactory
        {
            public ILogger CreateLogger()
            {
                return new Log4Net();
            }
    
    
        }
        public interface ILogger
        {
            void Log();
        }
        public interface ILoggerFactory
        {
            //Business to decide factory
            ILogger CreateLogger();
        }
    
        public class LogSerim : ILogger
        {
            public void Log()
            {
                Console.WriteLine("Logged with LogSerim");
            }
        }
    
        public class Log4Net : ILogger
        {
            public void Log()
            {
                Console.WriteLine("Logged with Log4Net");
            }
        }
    
        public class CustomerManager
        {
            private ILoggerFactory _loggerFactory;
    
            public CustomerManager(ILoggerFactory loggerFactory)
            {
                _loggerFactory = loggerFactory;
            }
            public void Save()
        
                                                       
                             
                               
                                    
  • Semih Tanış bir bağlantı paylaştı

    Singleton Design Pattern         Tarih : 10 Şubat 2018 Cumartesi

    Singleton Design Pattern 

    Bir nesne örneğinden sadece bir kere üretilip, bu nesne örneğini her zaman kullanılmasını öngören bir patterndir. 

    Singleton Design Pattern Nerde ve Niçin Kullanılır ?

    Singleton Desgin Patterninde en büyük hedef; bir nesnenin örneğinin ve o örnek değerinin değiştiği zaman tüm kullanıcılarda onu görmeye yarar  ve herkes aynı değeri okur. Örneğin: Bir web sitesinde anlık ziyaretçi sayacı olduğunu vasyalım. Bu anlık  ziyaretçi sayısı herkes tarafından aynı okunmak istenir ve bu ziyaretçi sayısı kulanıcılar siteye girdiğinde ya +1 atttırılır çıktığında da -1 azalttırılır ve tüm kullanıcılarda aynı değeri okur görür ve tüm tum kullanıcılar bundan etkilenir.

    Gerçak hayat uygulamalarından bir tanesi de singleton pattern ile ilgili; bir nesne örneğini özellikle katmanlar arasında geçerken ve bu nesne sadece işlem yapıyorsa herhangi bir değeri tutmak gibi görevi yoksa, işte tam burda singleton design pattern'i kullanmakta fayda var.

    Singleton design pattern'i ile bir nesne ürettiğinizde siz ISS' i restart etmediğiniz sürece o nesne hiç bir zaman ortadan kalkmaz. 

    Örnek Kod : 

    using System;
    
    namespace Singleton
    {
        class Program
        {
            static void Main(string[] args)
            {
              var customerManager =   CustomerManager.CreateAsSingleton();
               customerManager.Save();
            }
    
            class CustomerManager
            {
                private static CustomerManager _customerManager;
                static  object _lock
                                                       
                             
                               
                                    
 1 2 3 4 5 

Ziyaretçi İstatistiği

Ip : 54.224.133.152
Saat 20:27:46  
Tarih : 21.6.2018
Online : 3  
Toplam : 94662