يقدم
تحدد طريقة القالب الهيكل العظمي لخوارزمية تشغيلية وتأخير بعض الخطوات إلى فئة فرعية. تتيح طريقة القالب للفئة الفرعية إعادة تعريف خطوات معينة محددة للخوارزمية دون تغيير بنية الخوارزمية.
تعتبر طرق القالب تقنية أساسية لإعادة استخدام الكود ، وهو أمر مهم بشكل خاص في مكتبات الفصل لأنها تستخرج السلوك العام في مكتبات الفصل. تؤدي طريقة القالب إلى بنية تحكم عكسية ، وهي "قانون هوليوود" الأسطوري ، أي ، "لا تبحث عننا ، وسنبحث عنك" ، والتي تشير إلى فئة الوالدين التي تدعو تشغيل الفصل ، وليس العكس. المظاهر الملموسة هي فئات مجردة (والأساليب المجردة فيها) في لغات البرمجة الموجهة للكائنات ، وكذلك الفئات الفرعية التي ترث الفئة التجريدية (والأساليب التجريدية).
نص
على سبيل المثال ، فإن صنع الشاي والقهوة لهما نفس الخطوات ، مثل الماء المغلي ، والخمر ، وصبه في كوب ، وإضافة مكونات صغيرة ، وما إلى ذلك ، تختلف طريقة تخمير كل مشروب والمكونات الصغيرة المضافة ، حتى نتمكن من استخدام طريقة القالب لتحقيق هذه الخطوة الرئيسية.
أولاً ، حدد الخطوات المجردة:
نسخة الكود كما يلي:
var caffeineBeverage = function () {
} ؛
caffeinebeverage.prototype.preparerecipe = function () {
this.boilwater () ؛
this.brew () ؛
this.pouroncup () ؛
if (this.customerwantscondiments ()) {
// إذا كنت تستطيع إضافة مكونات صغيرة ، أضف
this.addcondiments () ؛
}
} ؛
caffeinebeverage.prototype.boilwater = function () {
console.log ("أحضر الماء إلى الغليان!") ؛
} ؛
caffeinebeverage.prototype.pouroncup = function () {
console.log ("ضع المشروب في الكأس!") ؛
} ؛
caffeinebeverage.prototype.brew = function () {
رمي خطأ جديد ("يجب إعادة كتابة هذه الطريقة!") ؛
} ؛
caffeinebeverage.prototype.addcondiments = function () {
رمي خطأ جديد ("يجب إعادة كتابة هذه الطريقة!") ؛
} ؛
// إضافة مواد صغيرة بشكل افتراضي
caffeinebeverage.prototype.customerwantscondiments = function () {
العودة صحيح.
} ؛
تمتد هذه الوظيفة على جميع الخطوات الأساسية والخطوات الرئيسية على النموذج الأولي. لا يتم تنفيذ تخمير المكونات الصغيرة وإضافة مكونات صغيرة ، ويستخدمها الوظيفة المقابلة للمشروبات المحددة للتنفيذ. بالإضافة إلى ذلك ، ما إذا كنت تريد إضافة مكونات صغيرة (CustomerWantsCondiments) إرجاع True بشكل افتراضي. يمكن إعادة كتابة هذه القيمة عند إعادة كتابة الوظيفة الفرعية.
وظيفتان التاليتان هما الوظائف المقابلة لتخمير القهوة والشاي تخمير:
نسخة الكود كما يلي:
// اصنع القهوة
var coffee = function () {
caffeinebeverage.apply (هذا) ؛
} ؛
coffee.prototype = caffeinebeverage جديد () ؛
coffee.prototype.brew = function () {
console.log ("أريد أن أصب القهوة من صانع القهوة!") ؛
} ؛
coffee.prototype.addcondiments = function () {
console.log ("إضافة السكر والحليب") ؛
} ؛
coffee.prototype.customerwantscondiments = function () {
إعادة تأكيد ("هل تريد إضافة السكر والحليب؟") ؛
} ؛
// اصنع أوراق الشاي
var tea = function () {
caffeinebeverage.apply (هذا) ؛
} ؛
tea.prototype = caffeineBeverage جديد () ؛
tea.prototype.brew = function () {
console.log ("puuuuuuuuuuuuuuuuUuuuuuleuuuuuuuuuuuuuUUUUUUUUUUUUUU uuuuuuuuuuuuuuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
} ؛
tea.prototype.addcondiments = function () {
console.log ("إضافة الليمون!") ؛
} ؛
tea.prototype.customerwantscondiments = function () {
تأكيد إرجاع ("هل تريد إضافة الليمون؟") ؛
} ؛
بالإضافة إلى ذلك ، يتيح استخدام التأكيد للمستخدمين اختيار ما إذا كان سيتم إضافة مكونات صغيرة بأنفسهم ، وهو أمر جيد جدًا ، أليس كذلك؟
لخص
يتم تطبيق طريقة القالب على المواقف التالية:
1. قم بتنفيذ الجزء غير المتغير من الخوارزمية في وقت واحد واترك السلوك القابل للتغيير إلى الفئات الفرعية لتنفيذها
2. يجب استخراج السلوك العام في كل فئة فرعية وتركيزه في فئة الوالدين العامة لتجنب ازدواج الكود ، ويتم فصل الاختلافات إلى عمليات جديدة. أخيرًا ، استبدل هذه الرموز المختلفة بطريقة قالب لتصوير هذه العمليات الجديدة.
3. السيطرة على امتدادات الفئة الفرعية. تستدعي طريقة القالب فقط عملية "الخطاف" في نقاط محددة ، بحيث تتيح الامتدادات في هذه النقاط.
على عكس أنماط السياسة ، تستخدم طرق القالب الميراث لتغيير جزء من الخوارزمية ، بينما تستخدم أنماط السياسة المندوبين لتغيير الخوارزمية بأكملها.