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

نام تاپیک: سوال در زمینه لیست ها

  1. #1

    سوال در زمینه لیست ها

    سلام من این نمونه کد رو دیدم و اصلا معنیشو نفهمیدم.
    لطفا اگه ممکنه یکی اینو توضیح بده:

    importjava.util.ArrayList;
    importjava.util.List;

    publicclass Pool<T>{
    publicinterface PoolObjectFactory<T>{
    public T createObject();
    }

    privatefinal List<T> freeObjects;
    privatefinal PoolObjectFactory<T> factory;
    privatefinalint maxSize;

    public Pool(PoolObjectFactory<T> factory, int maxSize){
    this.factory= factory;
    this.maxSize= maxSize;
    this.freeObjects=new ArrayList<T>(maxSize);
    }

    public T newObject(){
    T object =null;

    if(freeObjects.size()==0)
    object = factory.createObject();
    else
    object = freeObjects.remove(freeObjects.size()-1);

    return object;
    }

    publicvoid free(T object){
    if(freeObjects.size()< maxSize)
    freeObjects.add(object);
    }
    }


    مثلا این
    Pool<T>


    یعنی چی ؟؟

    T اینجا کارش چیه ؟؟

    چرا اومده تو کلاس Pool<T> یه interface بنام PoolObjectFactory<T> تعرف کرده ؟؟

    مگه برای استفاده از interface نباید که اول یه کلاس تعریف کرد و اونو توش implement کرد ؟؟
    پس چطور اینکارو نکرده اومده factory.createObject(); رو اجرا میکنه ؟؟

    تو اینترنت هیچ توضیح فارسی در مورد اینا پیدا نمیکنم از سایتای خارجی هم اصلا چیزی نمیفهمم.
    آخرین ویرایش به وسیله se8820726 : دوشنبه 12 اسفند 1392 در 23:15 عصر

  2. #2
    کاربر دائمی آواتار cups_of_java
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    40
    پست
    1,544

    نقل قول: سوال در زمینه لیست ها

    T اینجا کارش چیه ؟؟
    ای نماد بر میگرده به Generics و به معنی این هست که کلاس یا متد شما بر اساس انواع مختلفی کار کنه. بعنی نمی خوای از نوع از قبل مشخصی استفاده کنی مثل String, Object, ... و بر اساس هر نوعی که کاربر خواست تعیین کنه کلاس شما و متد شما چک های نوع رو انجام میده. امیدوارم رسونده باشم خیلی کوتاه. مثلن شما می تونی استخری از کانکشن های دیتابیس داشته باشی. استخری از اشیای دانشجو داشته باشی و ... اما کلاس استخر جدا از اینکه رو چه کلاسی کار کنه یه کلاس واحد و مشخص و یکتا هستش. و نمی شه گفت اون شی توی استخر رو باید از چه نوعی گرفت. پس از جنریکز استفاده میکنیم.

    چرا اومده تو کلاس
    Pool
    <
    T
    > یه interface بنام
    PoolObjectFactory
    <
    T
    > تعرف کرده ؟؟
    می تونسته بیرونش هم تعریف کنه. اما از اونجایی که جای دیگه با این اینترفیس کاری نداشته و فقط میخواسته راهی برای استفاده کننده از استخر درست کنه که بتونه شی های توی استتخر رو به شکل معینی ایجاد کنه. واسه همین توی همون کلاس تعریفش کرده.


    مگه برای استفاده از interface نباید که اول یه کلاس تعریف کرد و اونو توش implement کرد ؟؟
    پس چطور اینکارو نکرده اومده
    factory.
    createObject
    (
    )
    ; رو اجرا میکنه ؟؟
    چرا!‌ اون اومده یه شی فکتوری که بهش رسیده رو روش تابع createObject رو فراخوانی کرده. این مشتری کلاس استخر هست که باید اون تابع رو و اینترفیسش رو پیاده سازی کرده باشه تا بعدن این فراخوانی دچار مشکل نشه دیگه.
    به این روش کاربرد میگن پلیمرفیزم!!!

  3. #3

    نقل قول: سوال در زمینه لیست ها

    سلام داداش دمت گرم.
    میشه در مورد نحوه استفاده از این Pool<T> هم یه مثال عملی بزنی ؟؟

  4. #4
    کاربر دائمی آواتار cups_of_java
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    40
    پست
    1,544

    نقل قول: سوال در زمینه لیست ها

    فرض کن یه کلاس به اسم توپ داری بعد یه سری توپ رو میخوای تو این استخر بریزی و از اشیاش استفاده کنی. برای اینکار باید اون اینترفیس فکتوری رو واسه توپت پیاده سازی کنی که توش شی توپ رو ایجاد می کنی.
    بعد به استخر میگی newObject و یه توپ بهت میده... تمرینت رو باهاش می کنی وقتی کارت تموم شد میگی free و توپ رو میزاری توی سبد برای استفاده های بعدی...
    یه چیزی تو این مایه ها...


    public class PoolBallFactory<Ball> extends PoolObjectFactory<Ball> {

    public Ball createObject() {
    return new Ball();
    }

    }


    Pool p = new Pool( new PoolBallFactory(), 100 );
    Ball b = p.newObject();
    // play with b
    p.free( b );

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

  1. یه سوال در زمینه فیلتر کردن دیتا بیس؟
    نوشته شده توسط white fox در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: چهارشنبه 02 شهریور 1384, 04:13 صبح
  2. سوال: رنگ زمینه کنترل sstab ؟
    نوشته شده توسط Success در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: پنج شنبه 25 فروردین 1384, 09:46 صبح
  3. 2 سوال (FindDialog & لیست فونتها)
    نوشته شده توسط سیدهانی در بخش VB.NET
    پاسخ: 2
    آخرین پست: شنبه 30 آبان 1383, 22:57 عصر
  4. سوال در زمینه توابع gmp
    نوشته شده توسط moeen amirlatifi در بخش PHP
    پاسخ: 2
    آخرین پست: سه شنبه 25 فروردین 1383, 00:24 صبح
  5. سوال در زمینه php_self
    نوشته شده توسط moeen amirlatifi در بخش PHP
    پاسخ: 1
    آخرین پست: پنج شنبه 20 فروردین 1383, 18:22 عصر

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

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