أنماط التصميم المستخدمة في إطار الربيع

مرحبا يا هابروفسك المواطنين! انتهت عطلة نهاية الأسبوع الطويلة ، مما يعني أن الوقت قد حان لتبادل ترجمة مفيدة جديدة. اليوم سنتحدث عن أنماط التصميم المستخدمة في إطار الربيع. كما كنت قد خمنت ، هذه المادة مخصصة لبدء تعيين مجموعة جديدة في الدورة التدريبية "Developer for Spring Framework" ، والتي تبدأ في 28 مايو. لنبدأ.



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


فيما يلي بعض الأنماط المعروفة المستخدمة في إطار الربيع:


  • وكيل (نائب)
  • سينغلتون (وحده)
  • المصنع (مصنع)
  • القالب (القالب)
  • عرض نموذج المراقب المالي
  • المراقب الأمامي
  • عرض المساعد
  • حقن التبعية وانقلاب التحكم (IoC) (حقن التبعية وانعكاس التحكم)
  • محدد موقع الخدمة
  • مراقب-ملاحظتها (مراقب)
  • كائن السياق

وكيل (نائب)


نمط الوكيل يستخدم على نطاق واسع في AOP و عن بُعد .


مثال جيد على استخدام البروكسي هو org.springframework.aop.framework.ProxyFactoryBean .


يقوم هذا المصنع بإنشاء وكلاء AOP استنادًا إلى حبة الربيع.


يوفر الوكيل بديلاً لكائن آخر للتحكم في الوصول إليه.


اقرأ المزيد عن الوكيل هنا .


سينغلتون (وحده)


يضمن نمط Singleton وجود مثيل واحد فقط من الكائنات في الذاكرة يوفر خدمات.


في Spring ، يكون نطاق الحبة (النطاق) مفردة بشكل افتراضي وتقوم حاوية IoC بإنشاء مثيل واحد فقط للكائن على الحاوية Spring IoC.


ستقوم الحاوية Spring بتخزين هذا المثيل المفرد في ذاكرة التخزين المؤقت للحاوية المفرد ، وستتلقى كل الطلبات والروابط اللاحقة لهذه الحاوية الكائن المخزن مؤقتًا.


من المستحسن استخدام نطاق مفردة للفاصوليا عديمي الجنسية.


يمكن تعريف نطاق الحبة كنوع singleton أو كنموذج prototype (يتم إنشاء مثيل جديد مع كل طلب على الحبة).


مثال التكوين في ملف XML:


 <!--      singleton --> <bean id = "..." class = "..." scope = "singleton/prototype"> <!--    --> </bean> 

يمكنك قراءة المزيد عن سينجلتون هنا .


المصنع (مصنع)


يتيح لك هذا النمط تهيئة كائن من خلال طريقة ثابتة عامة تسمى طريقة المصنع.


يستخدم Spring نمط Factory لإنشاء كائن bean باستخدام النهجين التاليين.


  • BeanFactory


    حاوية بسيطة توفر الدعم الأساسي لـ DI (حقن التبعية ، حقن التبعية). يتم استخدام واجهة org.springframework.beans.factory.BeanFactory للعمل مع هذه الحاوية.


  • ApplicationContext



حاوية أخرى موجودة في Spring تضيف ميزات خاصة بالمؤسسة. تتضمن هذه الميزات القدرة على قراءة المعلمات من ملفات الخصائص ونشر أحداث التطبيق لمستمعي الأحداث.


يتم استخدام واجهة org.springframework.context.ApplicationContext للعمل مع هذه الحاوية.


فيما يلي ApplicationContext الأكثر استخدامًا في ApplicationContext .


  • FileSystemXmlApplicationContext - في المُنشئ ، يجب عليك تحديد المسار الكامل لملف XML مع تكوين الفول.


  • ClassPathXmlApplicationContext - تحتاج إلى وضع ملف XML مع تكوين الحبة في CLASSPATH.


  • XmlWebApplicationContext - تحميل ملف XML مع بيانات التعريف XmlWebApplicationContext في تطبيق ويب.



الأمثلة على ذلك:


 package com.eduonix.springframework.applicationcontext; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class App { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "C:/work/IOC Containers/springframework.applicationcontext/src/main/resources/bean-factory-config.xml"); HelloApplicationContext obj = (HelloApplicationContext) context.getBean("helloApplicationContext"); obj.getMsg(); } } 

لفهم هذا بشكل أفضل ، دعونا ننظر إلى مثال في العالم الحقيقي. التكوين الأول:


 <bean id="welcomerBean" class="com.mysite.Welcomer" factory-method="createWelcomer"> <constructor-arg ref="messagesLocator"></constructor-arg> </bean> <bean id="messagesLocator" class="com.mysite.MessageLocator"> <property name="messages" value="messages_file.properties"></property> </bean> 

والآن الفول:


 public class Welcomer { private String message; public Welcomer(String message) { this.message = message; } public static Welcomer createWelcomer(MessageLocator messagesLocator) { Calendar cal = Calendar.getInstance(); String msgKey = "welcome.pm"; if (cal.get(Calendar.AM_PM) == Calendar.AM) { msgKey = "welcome.am"; } return new Welcomer(messagesLocator.getMessageByKey(msgKey)); } } 

يمكنك قراءة المزيد عن المصنع هنا .


القالب (القالب)


يستخدم هذا النمط على نطاق واسع للعمل مع رمز النمطي المتكرر (مثل إغلاق الاتصالات ، وما إلى ذلك).
على سبيل المثال ، JdbcTemplate ، JmsTemplate ، JpaTemplate ( ملاحظة المترجم: تم إهمال JpaTemplate منذ Spring 3.1 ).


يمكنك قراءة المزيد عن القالب هنا .


عرض نموذج المراقب المالي


ميزة Spring MVC هي أن وحدات التحكم لديك هي POJOs ، وليس servlets. هذا يجعل اختبار التحكم أسهل. تجدر الإشارة إلى أن وحدات التحكم تحتاج فقط إلى إرجاع الاسم المنطقي ViewResolver العرض ، ويتم ترك اختيار طريقة العرض إلى ViewResolver . هذا يسهل إعادة استخدام وحدات التحكم لمختلف خيارات العرض التقديمي.


يمكنك قراءة المزيد عن Model View Controller هنا .


المراقب الأمامي


يوفر Spring DispatcherServlet للتأكد من إرسال طلب وارد إلى وحدات التحكم الخاصة بك.


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


يمكنك قراءة المزيد حول Front Controller هنا .


عرض المساعد


يحتوي Spring على العديد من علامات وسرعة وحدات JSP المخصصة للمساعدة في فصل الكود عن العرض التقديمي.


يفصل View Helper المحتوى الثابت في طريقة عرض ، مثل JSP ، عن معالجة منطق العمل.


توفر الأطر مثل Spring و Struts مكتبات العلامات الخاصة بها لتغليف منطق المعالجة في المساعدين بدلاً من وضع المنطق في طريقة عرض مثل ملفات JSP.


يمكنك قراءة المزيد عن View Helper هنا .


حقن التبعية وانعكاس التحكم (IOC) (حقن التبعية وانعكاس التحكم)


حاوية Spring's IoC مسؤولة عن إنشاء الكائن ، وربط الكائنات معًا ، وتكوين الكائنات ، والتعامل مع دورة حياتها بأكملها من الإنشاء إلى التدمير الكامل.


تستخدم الحاوية Spring Dependency Injection (DI) للتحكم في مكونات التطبيق. وتسمى هذه المكونات حبوب الربيع.


يمكنك قراءة المزيد عن Dependency Injection هنا .


محدد موقع الخدمة


ServiceLocatorFactoryBean بتخزين المعلومات حول جميع أنواع الحبوب في سياق ما. عندما يطلب رمز العميل خدمة (الحبة) بالاسم ، فإنه ببساطة يعثر على هذا المكون في السياق ويعيده. لا يحتاج رمز العميل إلى كتابة التعليمات البرمجية المتعلقة بـ Spring للعثور على الحبة.


يتم استخدام نمط محدد الخدمة عندما نريد العثور على خدمات متنوعة باستخدام JNDI. نظرًا لارتفاع تكلفة العثور على الخدمات في JNDI ، يستخدم Service Locator التخزين المؤقت. عند طلب خدمة لأول مرة ، يبحث "محدد موقع الخدمة" عن ذلك في JNDI ويقوم بتخزين الكائن مؤقتًا. يتم إجراء مزيد من البحث عن نفس الخدمة من خلال Service Locator في ذاكرة التخزين المؤقت ، مما يحسن أداء التطبيق بشكل كبير.


يمكنك قراءة المزيد عن محدد الخدمة هنا .


مراقب-ملاحظتها (مراقب)


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


يمكنك قراءة المزيد عن المراقب هنا .


كائن السياق


يقوم نمط كائن السياق بتغليف بيانات النظام في كائن سياق لمشاركتها مع أجزاء أخرى من التطبيق دون ربط التطبيق ببروتوكول معين.


ApplicationContext هي الواجهة المركزية في تطبيق Spring لتوفير معلومات تكوين التطبيق.


يمكنك قراءة المزيد عن كائن السياق هنا .


مراجع


https://stackoverflow.com/questions/755563/what-design-patterns-are-used-in-spring-framework


هنا هذه المواد. نحن في انتظار تعليقاتكم ، ونحن مدعوون إلى ندوة مجانية على الإنترنت ، والتي في إطارها سنقوم بتطوير تطبيق ويب كلاسيكي كامل مع واجهة المستخدم والتوثيق والترخيص. سنقوم أيضًا بدراسة ميزات تطبيقات الويب وسنحاول حل بعض مشكلات Enterprise والتي. سيتم عقد ندوة الويب اليوم.

Source: https://habr.com/ru/post/ar451516/


All Articles