سؤال

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

هذا السؤال ذو صلة، لكنه لا يطرحه تمامًا:

البرمجة الموجهة نحو الجانب مقابل البرمجة الموجهة نحو الجانبالبرمجة الشيئية

هل كانت مفيدة؟

المحلول

يتناول

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

function mainProgram()
{ 
   var x =  foo();
   doSomethingWith(x);
   return x;
}

aspect logging
{ 
    before (mainProgram is called):
    { 
       log.Write("entering mainProgram");
    }

    after (mainProgram is called):
    { 
       log.Write(  "exiting mainProgram with return value of "
                  + mainProgram.returnValue);
    }
 } 

aspect verification
{ 
    before (doSomethingWith is called):
    { 
       if (doSomethingWith.arguments[0] == null) 
       { 
          throw NullArgumentException();
       }

       if (!doSomethingWith.caller.isAuthenticated)
       { 
          throw Securityexception();
       }
    }
 }

وبعد ذلك جانب ويفر يستخدم لترجمة التعليمات البرمجية في هذا:

function mainProgram()
{ 
   log.Write("entering mainProgram");

   var x = foo();   

   if (x == null) throw NullArgumentException();
   if (!mainProgramIsAuthenticated()) throw Securityexception();
   doSomethingWith(x);   

   log.Write("exiting mainProgram with return value of "+ x);
   return x;
} 

نصائح أخرى

لسوء الحظ، يبدو أنه من الصعب جدًا جعل AOP مفيدًا حقًا في مؤسسة عادية متوسطة الحجم.(دعم المحرر، والشعور بالسيطرة، وحقيقة أنك تبدأ بالأشياء غير المهمة التي تؤدي إلى تعفن التعليمات البرمجية، وعودة الأشخاص إلى منازلهم وعائلاتهم، وما إلى ذلك)

أضع آمالي على البرمجة الموجهة المركبة, ، وهو شيء أكثر واقعية.إنه يتصل بالعديد من الأفكار الشائعة ويمنحك شيئًا رائعًا حقًا.

انظر إلى التنفيذ الصاعد والقادم هنا: qi4j.org/

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

ونسخ من نسخة مكررة للتأكد من اكتمالها (آينشتاين):

والأمثلة الكلاسيكية هي الأمن وقطع الأشجار. بدلا من كتابة التعليمات البرمجية في التطبيق الخاص بك لتسجيل حدوثها من x أو تحقق ض الكائن لمراقبة الدخول الامن هناك بدعة لغة "من فرقة" رمز العادي الذي يمكن حقن منهجي الأمن أو الدخول الروتينية التي لا يكون لهم nativly في مثل هذه الطريقة أنه على الرغم من التعليمات البرمجية لا يتم توفير ذلك -. رعايتها التقطت ل

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

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

ونسخ من الربيع في العمل

<اقتباس فقرة>   

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

ونسخ من نسخة مكررة للتأكد من اكتمالها (الطنان):

والطبقة وطريقة سمات في. NET هي شكل من أشكال برمجة جانبية المنحى. يمكنك تزيين منزلك الطبقات / أساليب مع الصفات. وراء الكواليس وهذا يضيف الرمز إلى صفك / الطريقة التي يؤدي وظائف معينة السمة. على سبيل المثال، بمناسبة فئة تسلسل تسمح لها بأن تكون تسلسل تلقائيا لتخزين أو نقل إلى نظام آخر. سمات أخرى قد علامة خصائص معينة على أنها غير تسلسل وهذه سيتم حذف تلقائيا من وجوه تسلسل. التسلسل هو الجانب الذي تنفذه رمز آخر في النظام، وتطبيقها على الطبقة الخاصة بك عن طريق تطبيق "التكوين" السمة (الديكور).

وهناك مثال اوب، كان عليه اوب الربيع كمثال على ذلك. على سبيل المثال من السهل جدا أن نفهم.

ويستخدم الربيع AOP (البرمجة الموجهة الجانب) الإطار إلى modularize اهتمامات مشتركة في جوانب. وضعها بسيطة، انها مجرد اعتراضية لاعتراض بعض العمليات، على سبيل المثال، عندما يكون الأسلوب هو تنفيذ، يمكن أن الربيع AOP اختطاف طريقة تنفيذ، وإضافة وظائف إضافية قبل أو بعد تنفيذ الأسلوب.

والمرجعي: http://www.mkyong.com/spring/spring الأمثلة--aop النصيحة /

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

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

<وأ href = "https://nearsoft.com/blog/aspect-oriented-programming-aop-in-net-core-and-c-using-autofac-and-dynamicproxy/" يختلط = "نوفولو noreferrer "> الجانب برمجة (اوب) في. NET الأساسية وC # باستخدام AutoFac وDynamicProxy

وAOP هو وسيلة لmodularize أفضل طلبك للحصول على الوظيفة التي تمتد عبر حدود متعددة. اوب هو طريقة أخرى لتغليف هذه الميزات وتابع المسوءولية واحدة عن طريق نقل هذه المخاوف الشاملة (قطع الأشجار، ومعالجة الأخطاء، وما إلى ذلك) من المكونات الرئيسية من التطبيق الخاص بك. عند استخدامها بشكل مناسب اوب يمكن أن يؤدي إلى مستويات أعلى من الصيانة والتمدد في التطبيق الخاص بك مع مرور الوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top