{"id":1520,"date":"2019-11-14T19:49:00","date_gmt":"2019-11-14T19:49:00","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=1520"},"modified":"2022-01-09T19:13:41","modified_gmt":"2022-01-09T19:13:41","slug":"solid-5-bagimliliklarin-ters-cevrilmesi-prensibi","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/","title":{"rendered":"SOLID 5 &#8211; Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi"},"content":{"rendered":"<p>Evet arkada\u015flar nihayet SOLID prensiplerinin son halkas\u0131na eri\u015fmi\u015f bulunmaktay\u0131z. SOLID serisi ile ilgili di\u011fer yaz\u0131lar\u0131ma, SOLID prensipleri genel anlamda neye hizmet ediyor i\u00e7in de ilk yaz\u0131ya a\u015fa\u011f\u0131daki ba\u011flant\u0131lardan ba\u015fvurabilirsiniz:<\/p>\n<ol>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/05\/10\/solid-1-tek-sorumluluk-prensibi\/\">SOLID 1 \u2013 Tek Sorumluluk Prensibi<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/08\/06\/solid-2-acik-kapali-prensibi\/\">SOLID 2 \u2013 A\u00e7\u0131k\/Kapal\u0131 Prensibi<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/09\/08\/solid-3-liskovun-yerine-gecme-prensibi\/\"><strong>SOLID 3 \u2013 \u201cLiskov Substitution\u201d Prensibi<\/strong><\/a><\/span><\/li>\n<li><a href=\"https:\/\/www.yazilimperver.com\/?p=1430&amp;preview=true\"><span style=\"color: #008000;\"><strong>SOLID 4 &#8211; Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.yazilimperver.com\/?p=1520\"><span style=\"color: #008000;\"><strong>SOLID 5 &#8211; Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi<\/strong><\/span><\/a><\/li>\n<\/ol>\n<h2><span style=\"color: #0000ff;\"><strong>Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi<\/strong><\/span><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/burakneis.com\/wp-content\/uploads\/2020\/11\/dependency-inversion-principle.jpeg\" alt=\"dependency-inversion-principle\" \/><\/p>\n<p id=\"omiNogC\">\n<p id=\"aOmbBeN\">\n<p>Bu yaz\u0131mda, sonuncu prensip olan Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesine (&#8220;<strong>Dependency Inversion Principle<\/strong>&#8220;) g\u00f6z ataca\u011f\u0131z.<\/p>\n<p>Prensibin detaylar\u0131na ge\u00e7meden \u00f6nce, asl\u0131nda bu prensiple de yak\u0131ndan ilgili olan ve kar\u015f\u0131m\u0131za k\u00f6t\u00fc tasar\u0131m olarak \u00e7\u0131kan bir tak\u0131m hususlardan bahsetmek iyi olacak san\u0131r\u0131m. Daha \u00f6nceki SOLID yaz\u0131lar\u0131mda da ifade etti\u011fim \u00fczere, bu tarz prensiplerin en \u00f6nemli amac\u0131, yaz\u0131l\u0131mlar\u0131m\u0131zda ortaya \u00e7\u0131kabilecek ve bize daha sonra s\u0131k\u0131nt\u0131 \u00e7\u0131karabilecek problemlerin \u00f6n\u00fcne ge\u00e7mektir. Ne yaz\u0131k ki bunlar\u0131n bir \u00e7o\u011fu genelde projede, ilerleme sa\u011fland\u0131ktan sonra farkedilir ve bunlara ili\u015fkin al\u0131nacak tedbirlerin de maliyeti fazla olabilir. Peki nedir bu s\u0131k\u0131nt\u0131lar ve bunlar\u0131 nas\u0131l anlayabiliriz.<\/p>\n<p>Bir uygulamada geli\u015ftirilen kabiliyeti, bile\u015feni ya da ilgili bir par\u00e7ay\u0131, mevcut ba\u011f\u0131ml\u0131l\u0131klar\u0131nda \u00f6t\u00fcr\u00fc kullanamama, ya da en ufak bir de\u011fi\u015fiklikte bile bir \u00e7ok yaz\u0131l\u0131m par\u00e7as\u0131n\u0131n bundan etkilenmesi ve de\u011fi\u015fikli\u011fin izole edilememesi. Ger\u00e7ekle\u015ftirilen de\u011fi\u015fiklik sonucu, beklenmedik \u015fekilde ba\u015f g\u00f6steren problemler\/hatalar. \u0130\u015fte b\u00fct\u00fcn bunlar bize asl\u0131nda, tasar\u0131msal bir s\u0131k\u0131nt\u0131n\u0131n oldu\u011funa ili\u015fkin uyar\u0131lar olarak niteleyebiliriz. Bunlar gibi elbette bir \u00e7ok daha etmen sayabiliriz ama en \u00f6nemlilerinin bunlar oldu\u011funu ifade edebiliriz.<\/p>\n<p>\u015eimdi gelelim prensibimize. Asl\u0131nda bu prensibin ismine bakarak da kendisine dair bir fikriniz olu\u015fmu\u015f olabilir. Bir kere, ba\u011f\u0131ml\u0131l\u0131klar\u0131n kar\u015f\u0131s\u0131nda oldu\u011fu san\u0131r\u0131m a\u00e7\u0131k \ud83d\ude42<\/p>\n<p>Di\u011fer prensiplerde oldu\u011fu gibi, bu prensip i\u00e7in de, Bob Martin&#8217;in \u00fcnl\u00fc yaz\u0131s\u0131nda ifade etti\u011fi a\u00e7\u0131klamalara bakal\u0131m:<\/p>\n<blockquote><p><em>High level modules should not depend upon low level modules. Both should depend upon abstractions.<\/em><\/p><\/blockquote>\n<p>ve<\/p>\n<blockquote><p>\u00a0<em>Abstractions should not depend upon details. Details should depend upon abstractions.<\/em><\/p><\/blockquote>\n<p>Yani k\u0131saca:<\/p>\n<ul>\n<li>\u00dcst seviye mod\u00fcller, kabiliyetler, s\u0131n\u0131flar, alt seviye birimlere ba\u011f\u0131ml\u0131 olmamal\u0131. Her iki seviye birimler de soyutlamalara ba\u011f\u0131ml\u0131 olmal\u0131d\u0131rlar,<\/li>\n<li>Soyut aray\u00fczler, s\u0131n\u0131flar, kabiliyetler, detaylara kabiliyet, s\u0131n\u0131flara ba\u011f\u0131ml\u0131 olmamal\u0131d\u0131r. Tam tersi, detay s\u0131n\u0131f ve kabiliyetler soyut s\u0131n\u0131flara ba\u011f\u0131ml\u0131 olmal\u0131d\u0131r.<\/li>\n<\/ul>\n<p>Burada ge\u00e7en alt seviye ve \u00fcst seviye mod\u00fcl ve kabiliyetlerden neyi kast etti\u011fimizden k\u0131saca bahsedelim:<\/p>\n<ul>\n<li><strong>Alt seviye mod\u00fcl:<\/strong> Spesifik ve somut i\u015flevleri ger\u00e7ekle\u015ftiren, temel kod par\u00e7alar\u0131 olarak ifade edebiliriz. \u00d6zel olarak, alt seviye API \u00e7a\u011fr\u0131lar\u0131, grafiksel kulan\u0131c\u0131 bile\u015fenleri ya da protokol metotlar\u0131 (\u00f6r. soket API&#8217;leri, OpenGL \u00e7a\u011fr\u0131lar\u0131 vb.)<\/li>\n<li><strong>\u00dcst seviye mod\u00fcl:<\/strong> Alt seviye i\u015flevleri kullanarak, as\u0131l uygulama i\u015flevlerini ger\u00e7ekle\u015ftiren kod par\u00e7alar\u0131 olarak ifade edebiliriz. \u00d6r. Alt seviye soket kodlar\u0131n\u0131 kullanan \u00e7ok oyunculu sunucu kabiliyeti ya da alt seviye OpenGL \u00e7a\u011fr\u0131lar\u0131n\u0131 kullanan arazi g\u00f6rselle\u015ftirmesi kodlar\u0131.<\/li>\n<\/ul>\n<p>\u0130sim olarak, neden ters \u00e7evirme denildi\u011fine gelecek olursak, bunun k\u00f6kleri asl\u0131nda eskilere, yap\u0131sal programlama zamanlar\u0131na dayanmakta. Genel olarak yap\u0131sal programlama ve tasar\u0131mda, yaz\u0131l\u0131m par\u00e7alar\u0131 (\u00fcst seviye), daha k\u00fc\u00e7\u00fck olan bile\u015fenleri d\u00fc\u015f\u00fcnerek, onlara ba\u011f\u0131ml\u0131 olarak olu\u015fturulmakta ve de soyutlamalar da, bunlar\u0131 ger\u00e7ekleyen detaylara ba\u011f\u0131ml\u0131 geli\u015ftirilmekteydi. \u0130\u015fte bu ters \u00e7evirme ibaresi de tam da bunu tersine \u00e7evirmek i\u00e7in \u00f6ne s\u00fcr\u00fclm\u00fc\u015f bir prensiptir.<\/p>\n<p>\u015eimdi yukar\u0131da bahsetti\u011fimiz y\u00f6nde (\u00fcst seviyeden alt seviyeye do\u011fru) bir ba\u011f\u0131ml\u0131l\u0131k durumunda neler olabilece\u011fine de k\u0131saca bir g\u00f6z atal\u0131m. Direk ba\u011f\u0131ml\u0131l\u0131k olmas\u0131 durumunda, alt seviyede ger\u00e7ekle\u015fecek olan herhangi bir de\u011fi\u015fiklik, \u00fcst seviye mod\u00fclleri de direk etkileyecek, onlar\u0131 da de\u011fi\u015fmeye zorlayacak ki bunlar asl\u0131nda i\u015f mant\u0131klar\u0131n\u0131 ve i\u015fleyi\u015flerini i\u00e7erdikleri i\u00e7in de\u011fi\u015fmelerini \u00e7ok istemiyoruz. Uzun vadede de, asl\u0131nda bu tarz \u00fcst seviye kabiliyetlerin tekrar kullan\u0131lmas\u0131 istenilen bir \u00f6zelliktir.<\/p>\n<p>\u0130nternette ve kaynaklar k\u0131sm\u0131nda verdi\u011fim sitelerde, farkl\u0131 programlama dilleri i\u00e7in bu prensibin nas\u0131l uygulanabilece\u011fine dair \u00f6rnek kodlara eri\u015febilirsiniz. Ben burada, Bob amcan\u0131n makalesinde verdi\u011fi \u00f6rne\u011fi sizler ile payla\u015faca\u011f\u0131m. Siz de muhakkak bu makaleye g\u00f6z atmay\u0131 unutmay\u0131n.<\/p>\n<p>\u015eimdi bunlar\u0131, yinen Bob amcan\u0131n makelesinde verdi\u011fi \u00f6rnek \u00fczerinden inceleyelim. \u00d6rnek, basit\u00e7e klavyeden girilen verileri, yaz\u0131c\u0131ya g\u00f6nderen bir program\u0131 i\u00e7eriyor. A\u015fa\u011f\u0131da bu uygulamaya ili\u015fkin genel yap\u0131y\u0131 g\u00f6rebilirsiniz:<\/p>\n<p id=\"lyqcRsX\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1533 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdac89c34a9.png\" alt=\"\" width=\"218\" height=\"143\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdac89c34a9.png 328w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdac89c34a9-300x197.png 300w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdac89c34a9-150x98.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdac89c34a9-200x131.png 200w\" sizes=\"auto, (max-width: 218px) 100vw, 218px\" \/><\/p>\n<p>\u00c7ok da karma\u015f\u0131k olmayan bu uygulama kapsam\u0131nda, Copy kabiliyeti, di\u011fer iki kabiliyeti kontrol ediyor, ilgili metotlar\u0131n\u0131 kullan\u0131yor. Basit\u00e7e a\u015fa\u011f\u0131daki gibi bir kodun \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcnebilirsiniz:<\/p>\n<pre class=\"lang:c++ decode:true\">void copy()\r\n{\r\n     int c;\r\n     while ((c = readKeyboard()) != EOF)\r\n          writePrinter(c);\r\n}<\/pre>\n<p>Burada her ne kadar, klavyeden veri okuma ve yaz\u0131c\u0131ya veri g\u00f6nderme kabiliyetleri, di\u011fer i\u015flevler i\u00e7in kullan\u0131labilecek olsa da, kopyalama i\u015flevi, tekrar kullan\u0131labilir de\u011fil. Peki neden? \u00c7\u00fcnk\u00fc \u015fu anda alt seviye iki kabiliyete de g\u00f6bekten ba\u011fl\u0131. \u00d6rne\u011fin, kopyalama kabiliyetinin, klavyeden okunacak olan veriyi diske yazaca\u011f\u0131n\u0131 d\u00fc\u015f\u00fcnelim. Mevcut durumda yap\u0131labilecek, kopyalama kabiliyetinin i\u00e7eri\u011fini de\u011fi\u015ftirip, diske yazma i\u00e7in de ek kontroller ekleyerek yap\u0131labilir ama bu da pek matah bir \u00e7\u00f6z\u00fcm olmayacakt\u0131r.<\/p>\n<pre class=\"lang:c++ decode:true \">\/\/ Hedefleri coklayal\u0131m\r\nenum class OutputDevice \r\n{\r\n   ePrinter, \r\n   eDisk\r\n};\r\n\r\nvoid copy(OutputDevice dev)\r\n{\r\n    int c;\r\n    while ((c = readKeyboard()) != EOF)\r\n    {\r\n       if (dev == OutputDevice::ePrinter)\r\n          writePrinter(c);\r\n       else\r\n          writeDisk(c);\r\n     }\r\n}<\/pre>\n<p>Bu durumda yapabilece\u011fimiz asl\u0131nda, \u00fcst seviye kopyalama kabiliyetini direk klavye ve yaz\u0131c\u0131ya ba\u011f\u0131ml\u0131 olan durumdan kurtarmak olacakt\u0131r ki, bunu da a\u015fa\u011f\u0131daki gibi soyut s\u0131n\u0131flar\u0131 tan\u0131mlayarak yapabiliriz.<\/p>\n<p id=\"EkbbGCq\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1534 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdae82db075.png\" alt=\"\" width=\"210\" height=\"212\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdae82db075.png 299w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdae82db075-150x152.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdae82db075-297x300.png 297w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdae82db075-200x202.png 200w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdae82db075-57x57.png 57w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdae82db075-72x72.png 72w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdae82db075-114x114.png 114w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/11\/img_5dcdae82db075-144x144.png 144w\" sizes=\"auto, (max-width: 210px) 100vw, 210px\" \/><\/p>\n<p>Ne yapm\u0131\u015f olduk? Burada art\u0131k kopyalama kabiliyeti direk somut s\u0131n\u0131flara ba\u011f\u0131ml\u0131 olmaktan \u00e7\u0131kar\u0131p aray\u00fczlere ba\u011f\u0131ml\u0131 hale getirdik. Ve benzer \u015fekilde de, klavye ve yaz\u0131c\u0131 s\u0131n\u0131flar\u0131n\u0131 da ayn\u0131 aray\u00fczlere ba\u011f\u0131ml\u0131 yapt\u0131k. Art\u0131k kopyalama kabiliyetini bu aray\u00fczleri sa\u011flayan farkl\u0131 veri sa\u011flay\u0131c\u0131s\u0131 ve veri yaz\u0131c\u0131lar\u0131 ile herhangi bir modifikasyon yapmadan kullanabilece\u011fiz.<\/p>\n<pre class=\"lang:c++ decode:true \">class Reader\r\n{\r\npublic:\r\n      virtual int read() = 0;\r\n};\r\n\r\nclass Writer\r\n{\r\npublic:\r\n      virtual void write(char) = 0;\r\n};\r\n\r\nvoid Copy(Reader&amp; r, Writer&amp; w)\r\n{\r\n    int c;\r\n    \r\n    while((c = r.read()) != EOF)\r\n       w.write(c);\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>\u00d6rne\u011fimize de bakt\u0131\u011f\u0131m\u0131za g\u00f6re \u015fimdi di\u011fer yaz\u0131lar\u0131mda oldu\u011fu gibi bu prensip ve ili\u015fkili SOLID prensiplerine dair de bir ka\u00e7 kelam etmek istiyorum.<\/p>\n<p>Bu noktada biraz durup hangi prensiplerin, bu prensipler ile ilgili olabilece\u011fini biraz d\u00fc\u015f\u00fcnmenizi isteyece\u011fim. Evet, yeterince d\u00fc\u015f\u00fcnd\u00fcyseniz, bunlar\u0131n, A\u00e7\u0131k\/Kapal\u0131 ve &#8220;Liskov Substitution&#8221; prensipleri oldu\u011funu hat\u0131rlayacaks\u0131n\u0131z. Asl\u0131na bakarsan\u0131z, bu iki prensibi kodunuzda uygulad\u0131\u011f\u0131m\u0131z zaman asl\u0131nda kodumuzun ba\u011f\u0131ml\u0131l\u0131klar\u0131n ters \u00e7evrilmesi prensibini de sa\u011flayacakt\u0131r. Peki nas\u0131l?<\/p>\n<p>Hemen k\u0131saca a\u00e7\u0131klayal\u0131m. \u00d6ncelikle A\u00e7\u0131k\/Kapal\u0131 prensibini hat\u0131rlayal\u0131m. Bu prensibi sa\u011flamak i\u00e7in s\u0131n\u0131flar\u0131m\u0131za aray\u00fczler tan\u0131mlay\u0131p, bu aray\u00fczleri farkl\u0131 \u015fekilde ger\u00e7ekleyerek, bile\u015fenlerimizi geni\u015fleyebilir hale getiriyorduk. &#8220;Liskov Substitution&#8221; prensibinde ise, somut s\u0131n\u0131flar\u0131n\u0131z, aray\u00fczleri do\u011fru bir \u015fekilde ger\u00e7ekliyor ve bu aray\u00fczlerin kullan\u0131ld\u0131\u011f\u0131 yerlerde, uygulaman\u0131z a\u00e7\u0131s\u0131ndan herhangi bir probleme yol a\u00e7mamal\u0131d\u0131r.<\/p>\n<p>Peki kodlarken bu prensibi nas\u0131l g\u00f6z \u00f6n\u00fcnde bulundurabiliriz diye d\u00fc\u015f\u00fcnecek olursak. K\u0131saca a\u015fa\u011f\u0131daki kalemlere dikkat etmek, bu anlamda yard\u0131mc\u0131 olacakt\u0131r:<\/p>\n<ul>\n<li>Olabildi\u011fince s\u0131n\u0131flardan ziyade, aray\u00fczlere, soyut s\u0131n\u0131flara (&#8220;abstract class&#8221;) ba\u011f\u0131ml\u0131 olmak,<\/li>\n<li>Referans ve i\u015faret\u00e7ilerin t\u00fcr\u00fcn\u00fc olabildi\u011fince soyut s\u0131n\u0131f ya da aray\u00fcz olarak belirlemek,<\/li>\n<li>S\u0131n\u0131flar, soyut s\u0131n\u0131f ya da aray\u00fczlerden t\u00fcretilmeli,<\/li>\n<li>T\u00fcretilen s\u0131n\u0131flarda bulunan fonksiyonlar, \u00fcst s\u0131n\u0131flar\u0131n ilgili fonksiyonlar\u0131n\u0131 ge\u00e7ersiz k\u0131lmamal\u0131\/yeniden tan\u0131mlamamal\u0131 (&#8220;override&#8221;).<\/li>\n<\/ul>\n<p>Yaz\u0131m\u0131n sonuna gelirken, emin sizlerin de bir k\u0131sm\u0131n\u0131z\u0131n da, benim gibi benzer bir tak\u0131m kavram ile kar\u015f\u0131lam\u0131\u015fs\u0131n\u0131zd\u0131r. Bunlardan en \u00f6nemlisi de san\u0131r\u0131m, <em>&#8220;Dependency Injection (DI)&#8221;<\/em>. Bir di\u011feri ise <em>&#8220;Inversion of Control (IoC)&#8221;<\/em>. Bu kavramlar\u0131n detaylar\u0131na burada girmeyece\u011fim ama bunlara ili\u015fkin g\u00fczel bir makaleye sizlerin y\u00f6nlendirmek istiyorum. Bu makaleye \u015fu adresten ula\u015fabilirsiniz:<\/p>\n<p><a href=\"https:\/\/martinfowler.com\/articles\/dipInTheWild.html#YouMeanDependencyInversionRight\"><strong><span style=\"color: #008000;\">https:\/\/martinfowler.com\/articles\/dipInTheWild.html#YouMeanDependencyInversionRight<\/span><\/strong><\/a>.<\/p>\n<p>Bu makalede k\u0131saca ifade edildi\u011fi \u00fczere, DIP genel olarak ba\u011f\u0131ml\u0131l\u0131k ili\u015fkisinin \u015fekli, DI ba\u011flama y\u00f6ntemi ve IoC ise bu ili\u015fkin y\u00f6n\u00fc ile alakal\u0131 bir kavramd\u0131r. Bu arada makale DIP&#8217;in kullan\u0131m\u0131na ili\u015fkin de \u00e7ok g\u00fczel \u00f6rnekler bar\u0131nd\u0131r\u0131yor.<\/p>\n<p>Sonu\u00e7 olarak bakacak olursak, DIP, nesne y\u00f6nelimli teknoloji i\u00e7in vaat edilen bir \u00e7ok faydadan yararlanabilmek i\u00e7in \u00f6nemli bir prensip olarak kar\u015f\u0131m\u0131za \u00e7\u0131kmakta. \u00d6zellikle yaz\u0131l\u0131m kabiliyetlerin tekrar kullan\u0131lmas\u0131n\u0131n yan\u0131nda, ger\u00e7ekle\u015fecek olan de\u011fi\u015fikliklerin etkisinin de izole edilerek azalt\u0131lmas\u0131na yard\u0131mc\u0131 olacak \u00e7ok \u00f6nemli bir prensiptir.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar:<\/strong><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=kMFQ3Gh4NHI\"><span style=\"color: #008000;\"><strong>https:\/\/www.youtube.com\/watch?v=kMFQ3Gh4NHI <\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/martinfowler.com\/articles\/dipInTheWild.html#YouMeanDependencyInversionRight\"><span style=\"color: #008000;\"><strong>https:\/\/martinfowler.com\/articles\/dipInTheWild.html#YouMeanDependencyInversionRight<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.wikiwand.com\/en\/Dependency_inversion_principle\"><span style=\"color: #008000;\"><strong>https:\/\/www.wikiwand.com\/en\/Dependency_inversion_principle<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/drive.google.com\/file\/d\/0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz\/view\"><span style=\"color: #008000;\"><strong>https:\/\/drive.google.com\/file\/d\/0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz\/view<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=5WHKNOTqwsA\"><span style=\"color: #008000;\"><strong>https:\/\/www.youtube.com\/watch?v=5WHKNOTqwsA<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.tomdalling.com\/blog\/software-design\/solid-class-design-the-dependency-inversion-principle\/\"><span style=\"color: #008000;\"><strong>https:\/\/www.tomdalling.com\/blog\/software-design\/solid-class-design-the-dependency-inversion-principle\/<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.labri.fr\/perso\/clement\/enseignements\/ao\/DIP.pdf\"><span style=\"color: #008000;\"><strong>https:\/\/www.labri.fr\/perso\/clement\/enseignements\/ao\/DIP.pdf<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/d3s.mff.cuni.cz\/f\/teaching\/nprg043\/05-principles.pdf\"><span style=\"color: #008000;\"><strong>https:\/\/d3s.mff.cuni.cz\/f\/teaching\/nprg043\/05-principles.pdf<\/strong><\/span><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Evet arkada\u015flar nihayet SOLID prensiplerinin son halkas\u0131na eri\u015fmi\u015f bulunmaktay\u0131z. SOLID serisi ile ilgili di\u011fer yaz\u0131lar\u0131ma, SOLID prensipleri genel anlamda neye hizmet ediyor i\u00e7in de ilk yaz\u0131ya a\u015fa\u011f\u0131daki ba\u011flant\u0131lardan ba\u015fvurabilirsiniz: SOLID 1 \u2013 Tek Sorumluluk Prensibi SOLID 2 \u2013 A\u00e7\u0131k\/Kapal\u0131 Prensibi SOLID 3 \u2013 \u201cLiskov Substitution\u201d Prensibi SOLID 4 &#8211; Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi SOLID 5 &#8211;&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":1162,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10,188],"tags":[553,632,630,628,629,631,533,532,531,442,441,448,447,440,449],"class_list":["post-1520","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-yazilim-muhendisligi","tag-abstraction","tag-bagimliliklarin-ters-cevrilmesi","tag-dependency-injection","tag-dependency-inversion-principle","tag-dip","tag-inversion-of-control","tag-nesne-yonelimli-tasarim","tag-nesne-yonelimli-yazilim-gelistirme","tag-ocp","tag-ood","tag-oop","tag-robert-c-martin","tag-software-design","tag-solid","tag-srp"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SOLID 5 - Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SOLID 5 - Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Evet arkada\u015flar nihayet SOLID prensiplerinin son halkas\u0131na eri\u015fmi\u015f bulunmaktay\u0131z. SOLID serisi ile ilgili di\u011fer yaz\u0131lar\u0131ma, SOLID prensipleri genel anlamda neye hizmet ediyor i\u00e7in de ilk yaz\u0131ya a\u015fa\u011f\u0131daki ba\u011flant\u0131lardan ba\u015fvurabilirsiniz: SOLID 1 \u2013 Tek Sorumluluk Prensibi SOLID 2 \u2013 A\u00e7\u0131k\/Kapal\u0131 Prensibi SOLID 3 \u2013 \u201cLiskov Substitution\u201d Prensibi SOLID 4 &#8211; Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi SOLID 5 &#8211;... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-14T19:49:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-09T19:13:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/05\/img_5cd5e44cbe99e.png\" \/>\n\t<meta property=\"og:image:width\" content=\"182\" \/>\n\t<meta property=\"og:image:height\" content=\"84\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"SOLID 5 &#8211; Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi\",\"datePublished\":\"2019-11-14T19:49:00+00:00\",\"dateModified\":\"2022-01-09T19:13:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/\"},\"wordCount\":1638,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"abstraction\",\"ba\u011f\u0131ml\u0131l\u0131klar\u0131n ters \u00e7evrilmesi\",\"dependency injection\",\"dependency inversion principle\",\"DIP\",\"inversion of control\",\"Nesne Y\u00f6nelimli Tasar\u0131m\",\"Nesne Y\u00f6nelimli Yaz\u0131l\u0131m Geli\u015ftirme\",\"OCP\",\"OOD\",\"OOP\",\"Robert C. Martin\",\"software design\",\"SOLID\",\"SRP\"],\"articleSection\":[\"C++\",\"Yaz\u0131l\u0131m M\u00fchendisli\u011fi\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/\",\"name\":\"SOLID 5 - Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2019-11-14T19:49:00+00:00\",\"dateModified\":\"2022-01-09T19:13:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SOLID 5 &#8211; Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SOLID 5 - Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/","og_locale":"tr_TR","og_type":"article","og_title":"SOLID 5 - Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Evet arkada\u015flar nihayet SOLID prensiplerinin son halkas\u0131na eri\u015fmi\u015f bulunmaktay\u0131z. SOLID serisi ile ilgili di\u011fer yaz\u0131lar\u0131ma, SOLID prensipleri genel anlamda neye hizmet ediyor i\u00e7in de ilk yaz\u0131ya a\u015fa\u011f\u0131daki ba\u011flant\u0131lardan ba\u015fvurabilirsiniz: SOLID 1 \u2013 Tek Sorumluluk Prensibi SOLID 2 \u2013 A\u00e7\u0131k\/Kapal\u0131 Prensibi SOLID 3 \u2013 \u201cLiskov Substitution\u201d Prensibi SOLID 4 &#8211; Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi SOLID 5 &#8211;... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2019-11-14T19:49:00+00:00","article_modified_time":"2022-01-09T19:13:41+00:00","og_image":[{"width":182,"height":84,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/05\/img_5cd5e44cbe99e.png","type":"image\/png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"SOLID 5 &#8211; Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi","datePublished":"2019-11-14T19:49:00+00:00","dateModified":"2022-01-09T19:13:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/"},"wordCount":1638,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["abstraction","ba\u011f\u0131ml\u0131l\u0131klar\u0131n ters \u00e7evrilmesi","dependency injection","dependency inversion principle","DIP","inversion of control","Nesne Y\u00f6nelimli Tasar\u0131m","Nesne Y\u00f6nelimli Yaz\u0131l\u0131m Geli\u015ftirme","OCP","OOD","OOP","Robert C. Martin","software design","SOLID","SRP"],"articleSection":["C++","Yaz\u0131l\u0131m M\u00fchendisli\u011fi"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/","name":"SOLID 5 - Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2019-11-14T19:49:00+00:00","dateModified":"2022-01-09T19:13:41+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/11\/14\/solid-5-bagimliliklarin-ters-cevrilmesi-prensibi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"SOLID 5 &#8211; Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Ters \u00c7evrilmesi Prensibi"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=1520"}],"version-history":[{"count":14,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1520\/revisions"}],"predecessor-version":[{"id":2430,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1520\/revisions\/2430"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/1162"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=1520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=1520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=1520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}