Problem 😫
Aşağıdaki gibi bir kod gördünüz mü?
<div class="highlight js-code-highlight">
<pre class="highlight php"><code><span class="k">public</span> <span class="k">function</span> <span class="n">processPayment</span><span class="p">(</span><span class="kt">Request</span> <span class="nv">$request</span><span class="p">)</span>{
$method = $request->payment_method;
<span class="k">if</span> <span class="p">(</span><span class="nv">$method</span> <span class="o">===</span> <span class="s1">'credit_card'</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// 50 lines of credit card logic...</span>
<span class="p">}</span> <span class="k">elseif</span> <span class="p">(</span><span class="nv">$method</span> <span class="o">===</span> <span class="s1">'paypal'</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// 40 lines of PayPal logic...</span>
<span class="p">}</span> <span class="k">elseif</span> <span class="p">(</span><span class="nv">$method</span> <span class="o">===</span> <span class="s1">'crypto'</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// 60 lines of crypto logic...</span>
<span class="p">}</span> <span class="c1">// ... more conditions</span>}
<p>Bu kod parçası aşağıdakilere neden olur:</p>
<ul>
<li>200 üzeri satıra sahip metotlar</li>
<li>Test edilemeyen kod</li>
<li>Bakım zorlukları</li>
<li>SOLID ihlalleri</li>
</ul>
<h2>
Çözüm: <strong>Strategy Pattern</strong> ✨
</h2>
<p>Strategy Pattern, algoritmaları ayrı sınıflara kapsülleyerek birbirleriyle değiştirilebilir hale getirir.</p>
<h3>
Adım 1: Arayüzü Tanımlayın
</h3>
<div class="highlight js-code-highlight">
<pre class="highlight php"><code><span class="kd">interface</span> <span class="nc">PaymentStrategyInterface</span>{
public function pay(float $amount, array $details): array;
public function validate(array $details): bool;
public function refund(string $transactionId, float $amount): array;
}


