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

نام تاپیک: دلیل این تو تعریف اینترفیس در مثالی که مطرح کردم رو نمیفهمم

  1. #1

    دلیل این تو تعریف اینترفیس در مثالی که مطرح کردم رو نمیفهمم

    سلام دوستان. با پترن MVP تو اندروید به تازگی دارم کار میکنم. یه سورسی تو اینترنت دیدم تقریبا همشون شبیه هم بودن با این ساختار. ولی تو این مثال نوعی اینترفیس تعریف کرده که اصلا نمیفهمم قضیه چیه. درک نمیکنم. برنامه نویس این سورس چرا به این شکل اینترفیس تعریف کرده. ضمن اینکه از این اینترفیس ها به غیر از کلاس اصلی که اونها رو پیاده سازی کردن هیچ جای دیگه ای کاربردی نداشته و اصلا استفاده هم نشدن.
    دو تا فایل و محتویات رو در نظر بگیرید لطفن:


    public interface IUser {
    String getName();
    String getPasswd();
    int checkUserValidity(String name, String passwd);
    }

    public class UserModel implements IUser {
    String name;
    String passwd;
    public UserModel(String name, String passwd) {
    this.name = name;
    this.passwd = passwd;
    }
    @Override
    public String getName() {
    return name;
    }
    @Override
    public String getPasswd() {
    return passwd;
    }
    @Override
    public int checkUserValidity(String name, String passwd){
    if (name==null||passwd==null||!name.equals(getName()) ||!passwd.equals(getPasswd())){
    return -1;
    }
    return 0;
    }
    }



    چه اجباری بوده که این اومده متدهای getName و getPasswd رو تو یه فایل دیگه و اینترفیس دیگه تعریف کرده. یا زیاده کاری کرده یا من نمیفهمم. چون به غیر از این کلاس UserModel تو هیچ جای دیگه استفاده نشده. یا مثال زیر رو دقت کنید لطفن:

    public interface ILoginPresenter {
    void clear();
    void doLogin(String name, String passwd);
    void setProgressBarVisiblity(int visiblity);
    void onDestroy();
    }

    public class LoginPresenterCompl implements ILoginPresenter {
    ILoginView iLoginView;
    IUser user;
    Handler handler;

    public LoginPresenterCompl(ILoginView iLoginView) {
    }

    @Override
    public void clear() {
    }

    @Override
    public void doLogin(String name, String passwd) {
    }

    @Override
    public void setProgressBarVisiblity(int visiblity){
    }

    @Override
    public void onDestroy() {
    }

    private void initUser(){
    }
    }

    نکته بسیار عجیبش اینجاست که این طرف اومده داخل اکتیویتی یه متدی استفاده کرده که تو کلاس اصلیش کلن هیچ کاری نمیکنه و خالی بدنش. منظورم onDestroy تو کلاس loginPresenter هستش.

    @Override
    protected void onDestroy() {
    super.onDestroy();
    loginPresenter.onDestroy();
    }

    لینک این سورس رو میتونید اینجا ببینید.

  2. #2
    [younes]
    مهمان

    نقل قول: دلیل این تو تعریف اینترفیس در مثالی که مطرح کردم رو نمیفهمم

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

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

  1. سوال: نحوه ی تعریف شی در کلاس که همه تابع های کلاس دیگر به ان دسترسی داشته باشن؟
    نوشته شده توسط hafez1 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: جمعه 16 مرداد 1394, 22:32 عصر
  2. سوال: فرق این 3 تعریف شی در چیست ؟
    نوشته شده توسط babak1 در بخش C#‎‎
    پاسخ: 5
    آخرین پست: سه شنبه 09 آذر 1389, 22:23 عصر
  3. پاسخ: 6
    آخرین پست: شنبه 21 آذر 1388, 07:42 صبح
  4. تعریف متغیری در پروسیجر که شبیه دیتا ریدر باشه
    نوشته شده توسط rezaei manesh در بخش SQL Server
    پاسخ: 7
    آخرین پست: دوشنبه 29 آبان 1385, 16:21 عصر

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

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