28 Ağu 2015

Adapter Pattern

Author: strongsoul | Filed under: Teknik

Yapısal kalıplar, sınıflar ve nesnelerin birleştirilerek daha geniş yazılım gruplarının kurulmasına olanak sağlar. Bu kalıplardan adapter patterni işleyeceğiz.

Yapısal tasarladığınız bir sistemde kendi kod yapınıza dışarıdan yazılmış bir kodu yada tümü ile dışarıdan işleyen bir yapıyı gömebilmek için kullanacağımız yapıdır.

Kısaca başka bir sistemi sistemimize adapte etmemizdir.

Örneğin log yapısını işleyen bir yapımız olduğunu düşünelim biz bu log yapısında XML ve ORACLE bağlantısını halihazırda yaptığımızı ve MS SQL bağlantısı içinde dış bir yapıyı bu sisteme dahil etmemiz gereksin.

haydi kodlayalım

using System;
using System.Collections.Generic;

namespace AdapterPatternProject
{
	class MainClass
	{
		public static void Main (string[] args)
		{
			List<ILog> readers= new List<ILog>();
			readers.Add(new XmlLog { writeANDread = "XML LOG" } );
			readers.Add(new DBLog { writeANDread = " ORACLE LOG" } );
			readers.Add(new AdapterClass(new AdapterPatternProject.ExternalLog()) { writeANDread = "EXT MS SQL LOG" } );

			foreach (ILog reader in readers)
			{
				Console.WriteLine(reader.writeANDread);
			}
		}
	}

	interface ILog
	{
		string writeANDread {get;set;}
	}

	class XmlLog : ILog
	{
		private string response = "i am xml";

		public string writeANDread
		{
			get
			{
				return response;
			}
			set
			{
				response = value;
			}
		}
	}

	class DBLog : ILog
	{
		private string response = "i am DB";

		public string writeANDread
		{
			get
			{
				return response;
			}
			set
			{
				response = value;
			}
		}
	}

	class AdapterClass : ILog
	{
		private string response = "i am adapter";

		private ExternalLog externalLog = null;
		public AdapterClass(ExternalLog iExternalLog)
		{
			this.externalLog = iExternalLog;
		}			

		public string writeANDread
		{
			get
			{
				response = externalLog.read();
				return response;
			}
			set
			{
				response = value;
				externalLog.write (response);
			}
		}
	}
		
	public class ExternalLog
	{
		private string content;
		public void write(string iContent)
		{
			content=iContent;
		}

		public String read()
		{
			return content;
		}
	}

}

ÇIKTI :
—————————
XML LOG
ORACLE LOG
EXT MS SQL LOG

Yorum Bırakın