مع ظهور البنية الموجهة للخدمة (SOA) ، تستخدم المزيد والمزيد من المؤسسات خدمات الجهات الخارجية لأنظمة مؤسساتها. تحتاج هذه الشركات إلى مواكبة بيئة الأعمال سريعة التغير ، مما قد يعني التخلي عن خدمات مقدم خدمة لآخر.
في مثل هذه الحالات ، قد تكون البنية الحالية للنشاط التجاري غير متوافقة مع بنية الموفر الجديد. بدلاً من إضاعة شهور في إعادة كتابة رمز المؤسسة لجعله متوافقًا مع البرامج الجديدة ، يمكن للشركة استخدام نمط تصميم المحول.
ما هو نمط تصميم المحول؟
يسمح نمط المحول للفئات التي تحتوي على واجهات غير متوافقة بالعمل معًا. يقوم بذلك عن طريق تحويل واجهة فئة (أو برنامج) موجود إلى واحدة يتوقعها العميل (أو الخدمة). هناك نوعان من المحولات: محولات الكائنات ومحولات الفئة.
يستخدم مهايئ الكائن تكوينًا للف المحول بالمحول ، مما ينتج عنه الواجهة التي يتوقعها العميل بشكل فعال. لذلك ، إذا كان العميل يتوقع سلسلة ، فسيأخذ المحول عددًا صحيحًا (المحول) ويعطيه خصائص السلسلة.
يمثل مخطط الفئة أعلاه محول الكائن. ال
فئة المحول تنفذ الهدف، والوصول بشكل فعال إلى جميع أساليب الواجهة. ثم يتكيف مع ملف التكيف ويلف ذلك التكيف مع ال الهدف طُرق.يستخدم محول الفئة وراثة متعددة ، حيث تكون فئة المحول هي الفئة الفرعية لكل من المحول والفئة الهدف. يمثل مخطط الفصل أدناه محول الفئة ، والذي يمكنك استخدامه بحرية في لغات البرمجة التي تدعم الوراثة المتعددة.
تنفيذ نمط تصميم المحول بجافا
سيقوم هذا التطبيق بتنفيذ محول الكائن. سيحاكي هذا التطبيق النموذجي مؤسسة مالية تنتقل من استخدام ومعالجة بطاقات الائتمان إلى بطاقات الائتمان. استخدمت هذه المنظمة في الأصل واجهة بطاقة الشحن التالية:
عامواجهه المستخدمبطاقة شحن{
عامفارغالرصيد الشهري();
عامفارغرسوم مؤجلة();
عامفارغرسوم سنوية();
}
أحد الأنواع الشائعة لبطاقات الائتمان التي يعالجها نظام هذه المؤسسة هو بطاقة البرقوق:
عامفصلبلومكاردالأدواتبطاقة شحن{
خاصint لا بطاقة؛
خاص سلسلة اسم العميل ؛
خاصمزدوج توازن؛// المنشئ الأساسي
عامبلومكارد(int cardNo ، سلسلة اسم العميل ، مزدوج توازن){
هذا.cardNo = cardNo ؛
هذا.customerName = customerName ؛
هذا.balance = الرصيد ؛
}
// حاصل على وضعية
عامintgetCard(){
يعود لا بطاقة؛
}
عامفارغsetCard(int لا بطاقة){
هذا.cardNo = cardNo ؛
}
عام خيط getCustomerName(){
يعود اسم الزبون؛
}
عامفارغsetCustomerName(String customerName){
هذا.customerName = customerName ؛
}
عاممزدوجgetBalance(){
يعود توازن؛
}
عامفارغsetBalance(مزدوج توازن){
هذا.balance = الرصيد ؛
}
@تجاوز
عامفارغالرصيد الشهري(){
System.out.println ("في يناير " + هذا.customerName + " أنفق " + هذا.توازن)؛
}
@تجاوز
عامفارغرسوم مؤجلة(){
System.out.println (هذا.customerName + "رسوم التأخير الشهرية 80.00 دولارًا أمريكيًا");
}
@تجاوز
عامفارغرسوم سنوية(){
System.out.println (هذا.customerName + "الرسوم السنوية 200.00 دولار");
}
}
تقوم هذه المؤسسة المالية بالانتقال إلى استخدام بطاقات الائتمان والتخلص التدريجي من بطاقات الائتمان ، لذلك أصبح لدى بعض عملائها الآن بطاقات ائتمان:
عامواجهه المستخدمبطاقة إئتمان{
عامفارغشهريا();
عامفارغاهتمام();
عامفارغرسوم سنوية();
}
يقوم نظام المؤسسات المالية الآن بمعالجة بطاقات الائتمان فقط ، حيث يتطلع إلى التوقف عن استخدام بطاقات الائتمان في العام المقبل. لكن معظم عملائهم ما زالوا يستخدمون بطاقات الشحن. لذلك ، قرر المهندسون أنه من الأفضل استخدام محول حتى ينتقل جميع عملائهم إلى بطاقة الائتمان.
عامفصلChargeCardAdapterالأدواتبطاقة إئتمان{
ChargeCard chargeCard ؛عامChargeCardAdapter(ChargeCard chargeCard){
هذا.chargeCard = chargeCard ؛
}@تجاوز
عامفارغشهريا(){
هذا.chargeCard.monthlyBalance () ،
}@تجاوز
عامفارغاهتمام(){
هذا.chargeCard.lateFee () ،
}
@تجاوز
عامفارغرسوم سنوية(){
هذا.بطاقة شحن. رسوم سنوية()؛
}
}
هذا ChargeCardAdapter فئة جافا تنفذ بطاقة الائتمان واجهة جافا. تتكيف مع ChargeCard (المحول) ، مما يمنحها خصائص بطاقة الائتمان. على سبيل المثال ، سيعالج النظام رسوم الفائدة على بطاقة الائتمان ، وهي الرسوم المتأخرة لعميل بطاقة الائتمان التي لم يتم تحويلها بعد.
مزايا استخدام نمط المحول
الميزة الرئيسية لاستخدام نمط المحول هي أنه يسمح للعملاء باستخدام خدمات ومكتبات وميزات جديدة دون تغيير التعليمات البرمجية الخاصة بهم. هذا يعزز قابلية تطوير التطبيق.
ميزة أخرى هي أن هذا النمط مرن أيضًا. يوفر نمط المحول طريقتين للتنفيذ: محولات الكائنات ومحولات الفئة.