Unverified Kaydet (Commit) 813e035e authored tarafından ook0's avatar ook0 Kaydeden (comit) GitHub

Open/Closed Principle çevirildi

Adapter kavramı, tasarım kalıbının anlaşılması açısından değiştirilmemesi gerek diye düşündüm.
üst ca43c4e8
...@@ -1261,11 +1261,8 @@ class UserSettings { ...@@ -1261,11 +1261,8 @@ class UserSettings {
``` ```
**[⬆ en başa dön](#içindekiler)** **[⬆ en başa dön](#içindekiler)**
### Open/Closed Principle (OCP) ### Açık/Kapalı Prensibi (OCP)
As stated by Bertrand Meyer, "software entities (classes, modules, functions, Bertrand Meyer'in belirttiği gibi, "yazılım varlıkları (sınıflar, modüller, fonksiyonlr v.b.) ekleme yapılmaya açık olmalıdır ama değişiklik yapmaya kapalı olmalıdır." Yani? Bu prensip basitçe, kullanıcıların, yazdığın kodu değiştirmeden fonksiyonellikler(işlevsellikler) eklemesine izin vermelisin diyor. (Kısaca var olanı değiştirmelerine izin verme ama yeni özellikler ekleyebilsinler diyor)
etc.) should be open for extension, but closed for modification." What does that
mean though? This principle basically states that you should allow users to
add new functionalities without changing existing code.
**Kötü:** **Kötü:**
```javascript ```javascript
...@@ -1283,30 +1280,30 @@ class NodeAdapter extends Adapter { ...@@ -1283,30 +1280,30 @@ class NodeAdapter extends Adapter {
} }
} }
class HttpRequester { class HttpIstekcisi {
constructor(adapter) { constructor(adapter) {
this.adapter = adapter; this.adapter = adapter;
} }
fetch(url) { fetch(url) {
if (this.adapter.name === 'ajaxAdapter') { if (this.adapter.name === 'ajaxAdapter') {
return makeAjaxCall(url).then((response) => { return ajaxCagrisiYap(url).then((response) => {
// transform response and return // response haline getir ve response dön
}); });
} else if (this.adapter.name === 'httpNodeAdapter') { } else if (this.adapter.name === 'httpNodeAdapter') {
return makeHttpCall(url).then((response) => { return httpCagrisiYap(url).then((response) => {
// transform response and return // response haline getir ve response dön
}); });
} }
} }
} }
function makeAjaxCall(url) { function ajaxCagrisiYap(url) {
// request and return promise // istek yap ve promise dön
} }
function makeHttpCall(url) { function httpCagrisiYap(url) {
// request and return promise // istek yap ve promise dön
} }
``` ```
...@@ -1318,8 +1315,8 @@ class AjaxAdapter extends Adapter { ...@@ -1318,8 +1315,8 @@ class AjaxAdapter extends Adapter {
this.name = 'ajaxAdapter'; this.name = 'ajaxAdapter';
} }
request(url) { istekYap(url) {
// request and return promise // istek yap ve promise dön
} }
} }
...@@ -1329,19 +1326,19 @@ class NodeAdapter extends Adapter { ...@@ -1329,19 +1326,19 @@ class NodeAdapter extends Adapter {
this.name = 'nodeAdapter'; this.name = 'nodeAdapter';
} }
request(url) { istekYap(url) {
// request and return promise // istek yap ve promise dön
} }
} }
class HttpRequester { class HttpIstekcisi {
constructor(adapter) { constructor(adapter) {
this.adapter = adapter; this.adapter = adapter;
} }
fetch(url) { fetch(url) {
return this.adapter.request(url).then((response) => { return this.adapter.istekYap(url).then((response) => {
// transform response and return // response haline getir ve response dön
}); });
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment