نمایش نتایج 1 تا 10 از 10

نام تاپیک: annotation چیست و چطوری میشه annotation های شخصی نوشت

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #5
    کاربر دائمی آواتار -سیّد-
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    تهران
    پست
    233

    نقل قول: annotation چیست و چطوری میشه annotation های شخصی نوشت

    خوب جا داره من یه مشق به شما بدم!

    فرض کنید یه سایت دارید، که توش چندین کار (action) مختلف می‌شه انجام داد. مثلاً ساده‌اش می‌شه این که می‌شه توش یه کاربر اضافه کرد، فهرست کاربرا رو دید، یه کاربر رو ویرایش کرد، و یه کاربر رو حذف کرد (عملیات CRUD).
    پس تا اینجا یه کلاس داریم مثلاً به نام MyController که توش ۴ تا تابع بالا هست (برای سادگی کار، توابع رو static گرفتم):

    public class MyController {
    public static void createAction() {
    ...
    }

    public static void listAction() {
    ...
    }

    public static void editAction() {
    ...
    }

    public static void deleteAction() {
    ...
    }
    }


    حالا می‌خوایم یه تابع route داشته باشیم که action رو به عنوان ورودی بگیره، و action مورد نظر رو انجام بده (تابع متناظرش رو فراخوانی کنه). این کار رو توسط Reflection می‌شه اینطوری انجام داد:

    public void route(String action) throws Exception {
    Method m = MyController.class.getDeclaredMethod(action + "Action");
    m.invoke(null);
    }

    (خیلی ساده‌سازی توی کد انجام دادم (و یه سری از best practice ها رو نقض کردم) که بشه مثال رو راحت جلو برد، لطفاً خیلی توجه نکنید!)

    تا اینجای کار همه چیز خوبه!

    حالا فرض کنید توی این سایت می‌خوایم سطوح دسترسی و Access Control تعریف کنیم. نقش‌هامون هم از قبل مشخص هستند:
    • admin: به تمام action هایی که گفتم دسترسی داره.
    • operator: می‌تونه فهرست کاربرا رو ببینه و هر کاربری رو ویرایش کنه.
    • guest: فقط می‌تونه فهرست کاربرا رو ببینه.

    حالا می‌خوایم این سطوح دسترسی رو توی کد تابع route اعمال کنیم و اگه یکی با سطح دسترسی نامناسب اومد سراغ یه تابع، یه Exception خاص (مثلاً AccessDeniedException) پرتاب کنیم. یعنی تعریف تابع route به این صورت تغییر می‌کنه:

    public void route(String action, String role) throws Expection {
    ...
    }


    خوب بسم‌الله! لطفاً این تابع رو پیاده‌سازی کنید و در جواب این پست بنویسید. (لطفاً دوستانی که جواب نهایی رو بلدن دخالت نکنن! پیشاپیش ممنونم!)
    آخرین ویرایش به وسیله -سیّد- : شنبه 24 مرداد 1394 در 23:10 عصر دلیل: فرمت کردن

تاپیک های مشابه

  1. سوال: چطوری میشه برنامه های وی بی6 رو تمام صفحه کرد
    نوشته شده توسط mkvisual در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: چهارشنبه 20 آبان 1388, 09:56 صبح
  2. چطوری میشه منو های ویندوز رو فارسی کرد
    نوشته شده توسط esrafilnl در بخش برنامه نویسی در 6 VB
    پاسخ: 7
    آخرین پست: پنج شنبه 02 آبان 1387, 11:35 صبح
  3. چطوری میشه کانکشن های وصل شده به db رو clear کرد؟
    نوشته شده توسط combo_ci در بخش SQL Server
    پاسخ: 1
    آخرین پست: دوشنبه 26 فروردین 1387, 19:12 عصر
  4. چطوری میشه فایل های اصلی ویندوز اکس پی رو عوض کرد؟
    نوشته شده توسط hex161 در بخش برنامه نویسی در 6 VB
    پاسخ: 14
    آخرین پست: شنبه 03 اردیبهشت 1384, 23:01 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •