<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>pattern design &#8211; Gökhan Doğru</title>
	<atom:link href="https://www.gokhandogru.net/tag/pattern-design/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.gokhandogru.net</link>
	<description>Sadece yazılımcıyım, format atmayı bilmiyorum.</description>
	<lastBuildDate>Tue, 26 May 2020 18:29:29 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.1</generator>

<image>
	<url>https://www.gokhandogru.net/wp-content/uploads/2019/12/cropped-Başlıksız-1-1-32x32.png</url>
	<title>pattern design &#8211; Gökhan Doğru</title>
	<link>https://www.gokhandogru.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Repository Pattern Nedir? Neden Kullanmalıyız?</title>
		<link>https://www.gokhandogru.net/repository-pattern-nedir-neden-kullanmaliyiz/</link>
					<comments>https://www.gokhandogru.net/repository-pattern-nedir-neden-kullanmaliyiz/#respond</comments>
		
		<dc:creator><![CDATA[Gökhan Doğru]]></dc:creator>
		<pubDate>Mon, 23 Mar 2020 17:42:07 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Design Pattern]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# pattern design]]></category>
		<category><![CDATA[c# repository pattern]]></category>
		<category><![CDATA[pattern design]]></category>
		<category><![CDATA[repository pattern design]]></category>
		<guid isPermaLink="false">http://gokhandogru.net/?p=365</guid>

					<description><![CDATA[Yazılım merakını dindiremeyip, ileri düzey konularını araştıran her insan mutlaka Design Pattern kavramıyla karşı karşıya gelirler. Yazılım hayatında birden fazla design olsa da asıl önemli olan hangi Design Pattern'i hangi zamanda ve onu nasıl kullanacağımızdır. Repository Pattern, Builder Design Pattern, Adapter Pattern, Command Design Pattern gibi birçok dizaynları görüp karşı karşıya geleceksiniz. Peki bunlardan Repository Pattern nedir? neden ve nasıl kullanmalıyız gelin hep birlikte incelemiş olalım...]]></description>
										<content:encoded><![CDATA[
<p>Eyyoo eyyoo herkese selamlar…<br><br>Yazılım merakını dindiremeyip, ileri düzey konularını araştıran her insan mutlaka <strong>Design</strong> <strong>Pattern</strong> kavramıyla karşı karşıya gelirler. Yazılım hayatında birden fazla design olsa da asıl önemli olan hangi Design Pattern&#8217;i hangi zamanda ve onu nasıl kullanacağımızdır. <strong>Repository Pattern</strong>, Builder Design Pattern, Adapter Pattern, Command Design Pattern gibi birçok dizaynları görüp karşı karşıya geleceksiniz. Peki bunlardan <strong>Repository Pattern </strong>nedir? neden ve nasıl kullanmalıyız gelin hep birlikte incelemiş olalım&#8230;<br><br>Konuyu anlatmadan önce unutmayalım ki.. Nesne yönelimli programalanın (OOP) amaçlarından biri; benzer kodları tekrar tekrar yazmak yerine <strong>bir yere yazıp onu kullanmaktır.&nbsp;</strong> Yani benzer kodları tekrar yazmaktan bizi kurtararak hem projemizin kodunun anlaşılır olmasını hemde zamandan tasarruf etmemize neden olur. <br><br># <strong>Peki Repository Pattern nedir ve neden kullanırız?</strong></p>



<p>&#8220;Veri merkezli uygulamalarda veriye erişimin ve yönetimin tek noktaya indirilmesini sağlayan yapıya <strong>Repository Pattern </strong>denir.&#8221;<br><strong>*</strong>Yani OOP mantığında da söylediğimiz gibi kod tekrarı olmadan, saf ve temiz bir şekilde <strong>veritabanı işlemlerinin</strong> tek bir noktadan kontrol edip, yönetilmesini <strong>Repository Pattern </strong>ile sağlıyoruz. </p>



<p><strong># Peki Repository Pattern faydaları nelerdir?</strong></p>



<ul><li>Projede değişiklikler yapıldığında kolayca yönlendirilebilir olması,</li><li>Esnek bir mimari yapıda olması,</li><li>Unit-Test yapabilmemizi kolaylaştırması,</li><li>Veri işlemlerinde ki hataları görmemizi kolaylaştırır.</li></ul>



<p>Şimdi yapacağımız örnekle birlikte kafamızda oluşan yapıyı sağlam bir şekilde oturmasını sağlıyalım.. 🙂<br><br>Örneğimiz şu şekilde; <br>Xamarin ile yapılan bir mobil restaurant uygulaması düşünelim&#8230; Uygulamamız veri(stok,masa,fiş,adisyon vb.) bilgilerini dışardan API yardımıyla SQL&#8217;den alıyor ve ekrana basıyor. <br>Eğer <strong>Repository Pattern</strong> bilmeseydik; Arka planda her SQL CRUD işlemleri için ayrı ayrı classlar ve ayrı ayrı metodlar yazıcaktık. Buda bize çok fazla efor ve zaman kaybı yaratacaktı. Fakat <strong>Repository Pattern</strong> ile birden fazla veri işlemlerini tek bi çatı altından yapacağız.</p>



<p>Şimdi projeye <strong>Repository</strong> klasörünü açıp içine <strong>BaseRepository</strong> adı altında bir class açıp interfacemizide tanımlayıp kodlarımızı yazmaya başlıyoruz.</p>



<figure class="wp-block-image"><img width="220" height="80" src="http://gokhandogru.net/wp-content/uploads/2020/03/image.png" alt="" class="wp-image-366"/></figure>



<p><strong>IBaseRepository</strong> interface&#8217;de kullanacağımız metodların imzalarını oluşturup bırakıyoruz&#8230;</p>



<script src="https://gist.github.com/heRanarchy/79fe18c9e4406c9630168b323d408b75.js"></script>



<p>Interface&#8217;lerimizi tanımladıktan sonra ana classımıza implement edip içlerine sunucumuzdan çekilecek verilerin <strong>HttpWebRequest </strong>&#8216;lerimizi oluşturuyoruz.<br>Ben anlamanız için sadece <strong>ReadAll </strong>ve <strong>ReadById </strong>metodlarını göstereceğim create,update,delete işlemini sizlere bırakıyorum:)</p>



<script src="https://gist.github.com/heRanarchy/c4e29437affead5a18df6a6342b15e08.js"></script>



<p>Repository metodlarını tamamladığımıza göre artık kategori,stok,ürün,adisyon vb. veri işlemlerinde tek bir noktadan istek gönderip, gelecek cevabı beklemek kalıyor..</p>



<p>Örnek; <strong>Kategoriler</strong> tablosunu istiyorum; </p>



<script src="https://gist.github.com/heRanarchy/784683d33673fc5aa5bc412d27cd4554.js"></script>



<figure class="wp-block-image"><img loading="lazy" width="579" height="410" src="http://gokhandogru.net/wp-content/uploads/2020/03/image-3.png" alt="" class="wp-image-383" srcset="https://www.gokhandogru.net/wp-content/uploads/2020/03/image-3.png 579w, https://www.gokhandogru.net/wp-content/uploads/2020/03/image-3-300x212.png 300w" sizes="(max-width: 579px) 100vw, 579px" /></figure>



<p>Gördüğünüz gibi <strong>result</strong> değişkenimin içine baktığım da 6tane verimin geldiğini görüyorum. API&#8217;den diğer verileri çekmek için <strong>.ReadAll(&#8220;Kategoriler&#8221;); </strong>&#8216;de parantez içinde ki valueyi değiştirmemiz yeterli. Nasıl mı ? buyrun örnekler;<br><br><strong>Stoklar</strong> tablosunu istiyorum -&gt;   string query = await baseRepo.ReadAll(&#8220;<strong>Stoklar</strong>&#8220;);<br><strong>Adisyon</strong> tablosunu istiyorum -&gt;   string query = await baseRepo.ReadAll(&#8220;<strong>Adisyon</strong>&#8220;);<br><strong>Masalar</strong> tablosunu istiyorum -&gt;   string query = await baseRepo.ReadAll(&#8220;<strong>Masalar</strong>&#8220;); gibi gibi..<br><br># Peki ben <strong>Masalar</strong> tablosundan hepsini değilde sadece <strong>ID</strong> numarası <strong>35</strong> olan masayı istiyorum nasıl getirebilirim?<br><br>Bu sefer .<strong>ReadAll</strong> yerine .<strong>ReadById</strong> kullanacağız.. buyrun;</p>



<script src="https://gist.github.com/heRanarchy/7efb4c4e01ee48e8653bfa0d4b7a7a99.js"></script>



<p>Diğer delete/update/create işlemlerinide sizlere bırakıyorum. Zaten mantığı anladıysanız gerisi çok sabit 🙂<br><br>Bir yazımızın daha sonuna geldik.. <br>Umarım projelerinizde sık sık Repository Design kullanır ve sevdiklerinize kullanımını tavsiye edersiniz. Unutmayın ki çalışacağınız firmalarda, büyük projelerde Repository Design çok fazla karşınıza gelecektir. Ben örneğimde sadece veri işlemleri için kullandım. Repoyu çok farklı yerlerde, işlerinizi hafifletmeniz için kullanabilirsiniz.<br><br>Herkese bol mantıklı kodlamalar 🙂</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gokhandogru.net/repository-pattern-nedir-neden-kullanmaliyiz/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
