Flyweight (Shared object reuse) [Structural]
Description
Use sharing to support large numbers of fine-grained objects efficiently.
Info
- از این پترن برای جلوگیری از ایجاد ساخت آبجکت های زیاد استفاده میشه، به این صورت که با ایجاد یه سیستم مموری کش، بررسی میکنیم اگر آبجکت قبلا ساخته نشده باشه ایجادش میکنیم.
- آبجکت ها تو این پترن ایمیوت ایبل هستن (غیر قابل تغییر) چون قراره چندین کلاینت مختلف ازشون استفاده کنن.
- یکی دیگه از نکات مهم این پترن اینه که هر آبجکت دو بخش درونی و بیرونی داره، بخش درونی ربطی به کلاینت نداره و در زمان ساخته شدن هر آبجکت تو دل خودش هارد کده، اما بخش بیرونی بسته به کلاینت متفاوته و وظیفه کلاینته که در زمان کال کردن متد های هر آبجکت این بخش بیرونی رو پاس بده به اون متد.