أنماط التصميم في Java مع أمثلة كود

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

أنماط التصميم في جافا: دليل شامل مع أمثلة



أنماط التصميم هي حلول مجربة للمشكلات النمطية التي تنشأ أثناء تطوير البرمجيات. في جافا، هذه الأنماط مطلوبة بشكل خاص بسبب النموذج الصارم للبرمجة كائنية التوجه في اللغة. استخدام الأنماط يجعل الكود أكثر مرونة وقابلية للصيانة والتوسع.



في هذه المقالة، سندرس ثلاث مجموعات رئيسية من أنماط التصميم في جافا: الإنشائية، والهيكلية، والسلوكية. سيصاحب كل نمط مثال عملي على الكود.



الأنماط الإنشائية



تدير الأنماط الإنشائية عملية إنشاء الكائنات، مما يجعل النظام مستقلاً عن طريقة بنائها. دعنا نلقي نظرة على اثنين من أكثر الأنماط شيوعاً: Singleton و Factory Method.



Singleton



يضمن Singleton أن الفئة لها مثيل واحد فقط ويوفر نقطة وصول عالمية إليه. يُستخدم هذا النمط غالباً لاتصالات قواعد البيانات، أو تسجيل الأحداث، أو التخزين المؤقت.



مثال على تطبيق Singleton آمن للخيوط في جافا:



public class DatabaseConnection {    private static volatile DatabaseConnection instance;    private String connectionString;

private DatabaseConnection(String connectionString) { this.connectionString = connectionString; }

public static DatabaseConnection getInstance(String connectionString) { if (instance == null) { synchronized (DatabaseConnection.class) { if (instance == null) { instance = new DatabaseConnection(connectionString); } } } return instance; }

public void connect() { System.out.println("Connecting to " + connectionString); }}


طريقة الاستخدام:



DatabaseConnection db = DatabaseConnection.getInstance("jdbc:mysql://localhost:3306/mydb");db.connect();


Factory Method



يحدد Factory Method واجهة لإنشاء كائن، لكنه يسمح للفئات الفرعية بتغيير نوع الكائن الذي سيتم إنشاؤه. يتيح ذلك تفويض إنشاء المثيل إلى الفئات الفرعية.



مثال على طريقة المصنع (Factory Method) لإنشاء أنواع مختلفة من الإشعارات:



interface Notification {    void send(String message);}

class EmailNotification implements Notification { public void send(String message) { System.out.println("Sending email: " + message); }}

class SMSNotification implements Notification { public void send(String message) { System.out.println("Sending SMS: " + message); }}

abstract class NotificationFactory { public abstract Notification createNotification();

public void notifyUser(String message) { Notification notification = createNotification(); notification.send(message); }}

class EmailNotificationFactory extends NotificationFactory { public Notification createNotification() { return new EmailNotification(); }}

class SMSNotificationFactory extends NotificationFactory { public Notification createNotification() { return new SMSNotification(); }}


طريقة الاستخدام:



NotificationFactory factory = new EmailNotificationFactory();factory.notifyUser("Your order has been confirmed!");


الأنماط الهيكلية



تصف الأنماط الهيكلية طرق دمج الفئات والكائنات لتكوين هياكل أكبر. دعنا نلقي نظرة على نمط Adapter.



Adapter



يسمح Adapter للكائنات ذات الواجهات غير المتوافقة بالعمل معاً. يغلف كائناً واحداً، مما يوفر الواجهة المطلوبة للعميل.



مثال على محول (Adapter) لدمج نظام تسجيل قديم:

المدونات

توصيات الكتب