ورود

View Full Version : سوال: الگو های طراحیpattern design



larten-k
سه شنبه 08 تیر 1395, 12:34 عصر
سلام چند تا سوال در مورد الگوها داشتم ممنون میشم راهنماییم کنین

در هر کدوم یک از این موارد از کدوم الگو استفاده شده

1)اینترفیس java.awt.event.ActionListener و کلاس javax.swing.AbstractAction و زیرکلاس هاش (مثلا CloseAction, IconifyActionund RestoreAction)(به غیر از observer)

https://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractAction.html


2)متد های run() و start() در java.lang.Thread.

https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html

3) متد clone() در کلاس java.util.HashSet (بطور کلی هر کلاسی که java.lang.Clonable رو ایمپیلیمنت میکنه)

https://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html#clone--


و یک سوال دیگه در این کد به جای اینکه این 4تا متد (addGift(), calculateDiscount(), calculateBillingAmount() send()) رو در داخل کلاس اینگونه اجرا بشن چه الگویی استفاده کنیم که با همین ترتیب اجرا بشه



public class AppSpaghetti {

public static void main(String[] args) {


UserType uType = UserType.valueOf(args[0]);



Bill bill = null;


switch (uType) {


case New:


bill = new NewUserBill();


break;


case Premium:


bill = new PremiumUserBill();


break;


case Standard:


bill = new StandardUserBill();


break;


default:


bill = new StandardUserBill();


break;


}
// بعد از آماده شدن صورتحساب باید این مراحل بعدی انجام یشن به ترتیب

// TODO چطور و با استفاده از کدوم الگو میتونسم مطمئن شیم که این 4تا متد به ترتیب اجرا میشن؟

bill.addGift(); //مشتری جدید هدیه دریافت میکند


bill.calculateDiscount(); // مشتری همیشگی تخفیف دریافت میکند

bill.calculateBillingAmount(); // همه جا به طور یکسان و ثابت این متد اجرا میشود

bill.send(); // این متد هم همینطور(مثلن از طریق ایمیل و ...)




System.out.println(bill);


}


}

vahid-p
چهارشنبه 09 تیر 1395, 07:36 صبح
الگوهای طراحی خصوصا سوال آخرتون، بیشتر به مهندسی نرم افزار (http://barnamenevis.org/forumdisplay.php?172-%D9%85%D8%A8%D8%A7%D8%AD%D8%AB-%D9%85%D8%B1%D8%AA%D8%A8%D8%B7-%D8%A8%D8%A7-%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C-%D9%86%D8%B1%D9%85%E2%80%8C%D8%A7%D9%81%D8%B2%D8%A 7%D8%B1)مرتبطه (در انجمنش مطرح کنید شاید بهتر باشه)

تنها کمکی که من میتونم بکنم،
برای پاسخگویی به این تمرین درس دانشگاهی (به احتمال زیاد) این منابع رو بخونید:
http://www.fluffycat.com/Java-Design-Patterns/
http://www.tutorialspoint.com/design_pattern/

و حتی اگر در اینترنت سرچ کنید این سوالات شما قبلا مطرح شده و جواب دقیق رو خواهید گرفت. ولی اینکه من خودم بخوام برای هر کدوم الگو طراحی رو تشخیص بدم، از اونجایی که تعداد الگوها زیادن (و در مواردی به هم شبیهن) و باید سورس موارد گفته شده دقیق بررسی بشه که با کدوم همخوانی داره، پس احتمال اینکه جوابم دقیق باشه کمه. پس گمراهتون نمیکنم !!

یه خورده سرچ کنید احتمالا به جواب برسید. مثلا برای سوال اولتون publisher/subscriber رو سرچ کنید. که معادل همون Observer است و شاید منظور سوال نام دیگه این الگو طراحی بوده. Notify کردن همه و اشتراک داشتن همه! کاری که الگو Observer همینو توصیف میکنه

برای سوال آخرت ببین Template نمیشه. به نظرم این میتونه باشه.