بعد استخدام برنامج معالجة الصور لمعالجة الصور ، تحتاج إلى تحديد تنسيق لحفظه. ومع ذلك ، فإن الخوارزميات التي تنفذها تنسيقات مختلفة على المستوى الأساسي ليست هي نفسها ، والتي تناسب نمط الإستراتيجية فقط. اكتب برنامجًا يوضح كيفية التطوير باستخدام مجموعة من أنماط السياسة وأنماط المصنع البسيطة.
الفكرة هي كما يلي:
1. استخدم واجهة لتحديد واجهة ، وتحديد طريقة Save () في الواجهة ؛
2. حدد فئات مختلفة وفقًا لتنسيق الصورة ، واستخدم أدوات الكلمة الرئيسية لتنفيذ الواجهة في هذه الفئات ؛
3. إنشاء فئة تنفذ التحديد ، ويحدد الطريقة التي تنفذ التحديد في هذه الفئة ، وقيمة إرجاع الطريقة هي فئة حفظ الصورة المقابلة ؛
4. تنفيذ الواجهة في الطريقة الرئيسية.
الرمز كما يلي:
نسخة الكود كما يلي:
الواجهة العامة صور {
void save () ؛ // define save () method
}
الطبقة العامة gifsaver تنفذ الصور {
@تجاوز
void public save () {// تنفيذ طريقة Save ()
System.out.println ("حفظ الصورة بتنسيق GIF") ؛
}
}
الطبقة العامة jpegsaver تنفذ الصور {
@تجاوز
void public save () {
System.out.println ("حفظ الصورة بتنسيق JPG") ؛
}
}
الفئة العامة PNGSaver تنفذ الصور {
@تجاوز
void public save () {
System.out.println ("حفظ الصورة بتنسيق PNG") ؛
}
}
الطبقة العامة typechooser {
صور ثابتة عامة getSaver (نوع السلسلة) {
if (type.equalsignorecase ("gif")) {// استخدم عبارة if else لتحديد نوع الصورة
إرجاع جديد gifsaver () ؛
} آخر إذا (type.equalsignorecase ("jpeg")) {
إرجاع New JPegsaver () ؛
} آخر إذا (type.equalsignorecase ("png")) {
إرجاع New PNGSaver () ؛
} آخر {
العودة لاغية.
}
}
}
مستخدم الفئة العامة {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
System.out.print ("قام المستخدم باختيار تنسيق GIF:") ؛
Imagesaver Saver = typechooser.getsaver ("GIF") ؛ // احصل على الكائن الذي يحفظ الصورة كنوع GIF
saver.save () ؛
System.out.print ("تنسيق المستخدم JPEG:") ؛ // احصل على الصورة المحفوظة ككائن نوع JPEG
saver = typechooser.getSaver ("jpeg") ؛
saver.save () ؛
System.out.print ("تنسيق المستخدم PNG:") ؛ // احصل على الكائن الذي يحفظ الصورة كنوع PNG
saver = typechooser.getSaver ("png") ؛
saver.save () ؛
}
}
يظهر التأثير في الصورة: