1- متدهای فکتوری با الگوی طراحی Factory Pattern نوشته می شوند. این راه حل زمانی استفاده میشه که بخوای پیچیدگی ها و منطق های ساخت یه آبجکت رو از دید کاربر مخفی کنی و آبجکت نهایی رو بهش بدی. معمولا ترجیح داده میشه به constructor زمانی که ساخت یک آبجکت پیچیده ست.
2- شما وقتی از یک آبجکت immutable استفاده می کنین، معمولا clone کردن یک جزء اصلی از کد محسوب میشه.چون نمی خواین آبجکت خودتون رو تغییر بدین. مثلا وقتی یه کلاسی یه فیلدی از آرایه یا لیست داره، وقتی get فراخوانی میشه رو فیلد مورد نظر، باید مطمئن بشین هربار یه کپی از لیست برگردونده بشه نه خود لیست یا آرایه اصلی. و این کار هم با clone کردن انجام میشه.