Coupling معیاری است که نشان می دهد یک عنصر چقدر به عناصر دیگر متصل است، دانش دارد یا به عناصر دیگر تکیه دارد. Low Coupling یک الگوی ارزیابی است که نحوه تخصیص مسئولیت ها به پشتیبانی را دیکته می کند.
بیایید این الگو را با مشکل کد موجود و نحوه ارائه راه حل برای آن درک کنیم.
مسئله: چگونه از وابستگی کم، تأثیر تغییر کم و افزایش استفاده مجدد پشتیبانی کنیم؟
راه حل: مسئولیتی را تعیین کنید تا Coupling کم باقی بماند.
به عنوان مثال، یک کلاس با Coupling بالا (یا قوی) به بسیاری از کلاس های دیگر متکی است. چنین کلاس هایی ممکن است نامطلوب باشند. برخی از مشکلات زیر وجود دارد:
مثال
این یک نمونه از loose coupling است. در اینجا نحوه دستیابی به loose coupling با اعمال مکانیزم تزریق وابستگی را نشان خواهیم داد، پیاده سازی loose coupling برای اجازه شروع سفر با هر کلاسی که واسط وسیله نقلیه را پیاده سازی کرده است به دست می آید.
مرحله 1: اینتفریس Vehicle
برای اجازه اجرای loose coupling.
interface Vehicle { public void move(); }
مرحله 2: کلاس Car رابط Vehicle را پیاده سازی می کند.
class Car implements Vehicle { @Override public void move() { System.out.println("Car is moving"); } }
مرحله 3: کلاس Bile رابط Vehicle را پیاده سازی می کند.
class Bike implements Vehicle { @Override public void move() { System.out.println("Bike is moving"); } }
مرحله 4: اکنون یک کلاس Traveler ایجاد کنید که مرجع رابط Vehicle را نگه می دارد.
class Traveler { private Vehicle v; public Vehicle getV() { return v; } public void setV(Vehicle v) { this.v = v; } public void startJourney() { v.move(); } }
مرحله 5: کلاس test برای مثال loose coupling - Traveler نمونه ای از loose coupling است.
public static void main(String[] args) { Traveler traveler = new Traveler(); traveler.setV(new Car()); // Inject Car dependency traveler.startJourney(); // start journey by Car traveler.setV(new Bike()); // Inject Bike dependency traveler.startJourney(); // Start journey by Bike }
برای مطالعه ی ادامه مطالب به لینک مراجعه کنید.