کتاب دیزاین پترن زمانی نوشته شده که من 12 سالم بوده. برای مساله های مختلف که برنامه نویسان برخورد میکردن یک شکل خاص از کلاس و سازنده رو ایجاد میکردن. و کم کم این قالب ها شد الگوی خاصی و نامگذاری شد.
اگر هیچکدوم این دیزاین پترن ها هم نبود من و شما باید بتونیم شبیه اونها رو شبه اونها رو تولید کنیم. به اون کسی که بتونه شبیه اینها رو تولید کنه میگن برنامه نویس واقعی. البته میشه حفظ کرد و استفاده کرد. اجتهاد هم لازم نیست.
طراحی نرم افزار شی گرا سخت است و طراحی نرم افزار شی گرا قابل استفاده مجدد حتی خیلی سخت تر است.
Designing object-oriented software is hard, and designing reusable object-oriented software is even harder.
شما باید اشیاء مربوطه را پیدا کنید، آنها را در کلاسها قرار دهید. دانه بندی و نظم درستی بدهید، رابط های کلاس و سلسله مراتب وراثت را تعریف کنید و روابط کلیدی بین آنها را طراحی کنید که طراحی شما باید مختص مشکل موجود باشد.
You must find pertinent objects, factor them into classes at the right granularity, define class interfaces and inheritance hierarchies, and establish key relationships among them.
همچنین به اندازه کافی باید عمومی و کلی دیده بشه که برای رسیدگی به مشکلات و الزامات آینده انعطاف پذیر باشه. و تا جایی که میشه از طراحی مجدد کل برنامه خودداری کنید یا حداقل آن را به حداقل برسانید.
Your design should be specific to the problem at hand but also general enough to address future problems and requirements. Youalso want to avoid redesign, or at least minimize it.
طراحان شی گرای با تجربه خواهند گفت: شما که یک طراحی قابل استفاده مجدد و انعطاف پذیر آن هم برای اولین بار در مواجهه با یک صورت مساله، اگر غیرممکن نباشد دشوار است.
Experienced object-oriented designers will tell you that a reusable and flexible design is difficult ifnot impossible to get "right" the first time
قبل از اینکه یک طرح تمام شود، معمولا سعی می کنند چندین بار از آن استفاده کنند و آن را اصلاح کنند
. Before a design is finished, they usually try to reuse it several times, modifying it each time.