From bd13edc6aee599c6f83b3cf346b391854cbba0b7 Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Thu, 17 Apr 2025 14:21:42 +0330 Subject: [PATCH 01/32] Persian Translation: Add persian translation to abstract-document --- localization/fa/abstract-document/README.md | 129 ++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 localization/fa/abstract-document/README.md diff --git a/localization/fa/abstract-document/README.md b/localization/fa/abstract-document/README.md new file mode 100644 index 000000000000..beeba045f6a4 --- /dev/null +++ b/localization/fa/abstract-document/README.md @@ -0,0 +1,129 @@ +عنوان: "الگوی سند انتزاعی در جاوا: ساده‌سازی مدیریت داده با انعطاف‌پذیری" +عنوان کوتاه: Abstract Document +توضیح: "با الگوی طراحی Abstract Document در جاوا آشنا شوید. هدف، توضیح، کاربرد، مزایا و نمونه‌های دنیای واقعی برای پیاده‌سازی ساختارهای داده‌ای پویا و منعطف را بیاموزید." +دسته‌بندی : ساختاری +زبان: fa +tag: + + Abstraction + + Decoupling + + Dynamic typing + + Encapsulation + + Extensibility + + Polymorphism + +هدف از الگوی طراحی Abstract Document + +الگوی طراحی Abstract Document در جاوا یکی از الگوهای ساختاری مهم است که روشی یکپارچه برای مدیریت ساختارهای داده‌ای سلسله‌مراتبی و درختی فراهم می‌کند. این الگو با تعریف یک رابط مشترک برای انواع مختلف اسناد، ساختار اصلی سند را از قالب‌های داده‌ای خاص جدا می‌کند و امکان به‌روزرسانی پویا و نگهداری ساده‌تر را فراهم می‌سازد. +توضیح کامل الگوی Abstract Document همراه با مثال‌های دنیای واقعی + +الگوی Abstract Document در جاوا امکان مدیریت پویا ویژگی‌های غیراستا‌تیک را فراهم می‌سازد. این الگو از مفهوم traits استفاده می‌کند تا ایمنی نوع (type safety) را حفظ کرده و ویژگی‌های کلاس‌های مختلف را به مجموعه‌ای از اینترفیس‌ها تقسیم کند. + +مثال دنیای واقعی + + یک سیستم کتابخانه را در نظر بگیرید که از الگوی Abstract Document در جاوا استفاده می‌کند، جایی که کتاب‌ها می‌توانند قالب‌ها و ویژگی‌های متنوعی داشته باشند: کتاب‌های فیزیکی، کتاب‌های الکترونیکی و کتاب‌های صوتی. هر قالب ویژگی‌های خاص خود را دارد، مانند تعداد صفحات برای کتاب‌های فیزیکی، حجم فایل برای کتاب‌های الکترونیکی و مدت زمان برای کتاب‌های صوتی. این الگو به سیستم کتابخانه اجازه می‌دهد تا این قالب‌های متنوع را به شکلی انعطاف‌پذیر مدیریت کند. با استفاده از این الگو، سیستم می‌تواند ویژگی‌ها را به‌صورت پویا ذخیره و بازیابی کند، بدون نیاز به ساختار سخت‌گیرانه برای هر نوع کتاب، و افزودن قالب‌ها یا ویژگی‌های جدید در آینده را امکان‌پذیر می‌سازد. + +به زبان ساده + + الگوی Abstract Document این امکان را می‌دهد که ویژگی‌هایی را به اشیاء اضافه کنیم بدون آنکه اشیاء از وجود این ویژگی‌ها اطلاع داشته باشند. + +در ویکی‌پدیا آمده است: + + یک الگوی طراحی ساختاری شی‌ء‌گرا برای سازمان‌دهی اشیاء در ساختارهای کلید-مقدار با نوع‌دهی ضعیف و نمایش داده‌ها از طریق نمای‌های نوع‌دار. هدف از این الگو دستیابی به انعطاف‌پذیری بالا بین اجزا در زبان‌های strongly typed است، به گونه‌ای که ویژگی‌های جدید را بتوان به‌صورت پویا به درخت اشیاء اضافه کرد، بدون از دست رفتن ایمنی نوع. این الگو از traits برای جدا کردن ویژگی‌های مختلف یک کلاس به اینترفیس‌های جداگانه استفاده می‌کند. + +نمودار کلاس + +Abstract Document class diagram +نمونه برنامه‌نویسی از الگوی Abstract Document در جاوا + +فرض کنید ماشینی داریم که از چندین قطعه تشکیل شده است. اما نمی‌دانیم آیا ماشین خاصی تمام این قطعات را دارد یا فقط برخی از آن‌ها را. ماشین‌های ما پویا و بسیار انعطاف‌پذیر هستند. + +ابتدا کلاس‌های پایه Document و AbstractDocument را تعریف می‌کنیم. این کلاس‌ها امکان نگهداری یک نقشه ویژگی‌ها (property map) و هر تعداد شیء فرزند را فراهم می‌کنند. + +// ... کد تغییر نکرده + +در مرحله بعد، یک enum به نام Property و مجموعه‌ای از اینترفیس‌ها برای type، price، model و parts تعریف می‌کنیم. این کار امکان ایجاد رابطی شبیه به اینترفیس‌های استاتیک را برای کلاس Car فراهم می‌کند. + +// ... کد تغییر نکرده + +اکنون آماده‌ایم که Car را معرفی کنیم. + +// ... کد تغییر نکرده + +و در نهایت نحوه ساخت و استفاده از Car را در یک مثال کامل می‌بینیم: + +// ... کد تغییر نکرده + +خروجی برنامه: + +07:21:57.391 [main] INFO com.iluwatar.abstractdocument.App -- ساخت قطعات و خودرو +07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- این هم خودروی ما: +07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- -> مدل: 300SL +07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> قیمت: 10000 +07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> قطعات: +07:21:57.395 [main] INFO com.iluwatar.abstractdocument.App -- wheel/15C/100 +07:21:57.395 [main] INFO com.iluwatar.abstractdocument.App -- door/Lambo/300 + +چه زمانی از الگوی Abstract Document در جاوا استفاده کنیم؟ + +الگوی طراحی Abstract Document در موقعیت‌هایی که نیاز به مدیریت انواع مختلفی از اسناد با ویژگی‌ها یا رفتارهای مشترک و در عین حال ویژگی‌های خاص دارند، بسیار مفید است. برخی کاربردهای مناسب برای این الگو: + + سیستم‌های مدیریت محتوا (CMS): انواع مختلف محتوا مانند مقاله، تصویر، ویدیو و ... که برخی ویژگی‌های مشترک مانند تاریخ ایجاد، نویسنده و برچسب دارند، اما ویژگی‌های خاص خود را نیز دارند مانند ابعاد تصویر یا مدت زمان ویدیو. + + سیستم فایل: در طراحی فایل‌سیستمی با انواع مختلف فایل (سند، تصویر، صدا، پوشه)، این الگو امکان دسترسی منسجم به ویژگی‌هایی مانند اندازه و تاریخ ایجاد را فراهم می‌کند، در حالی که ویژگی‌های خاص نیز قابل پیاده‌سازی هستند. + + سیستم‌های تجارت الکترونیکی: انواع مختلف محصول مانند فیزیکی، دیجیتالی و اشتراکی که ویژگی‌های مشترک مانند نام، قیمت، توضیح دارند و ویژگی‌های خاص مانند وزن حمل برای فیزیکی یا لینک دانلود برای دیجیتال. + + سیستم‌های سوابق پزشکی: سوابق بیمار با انواع داده مانند اطلاعات فردی، سوابق پزشکی، نتایج آزمایش‌ها و نسخه‌ها که ویژگی‌های مشترکی مانند شناسه بیمار و تاریخ تولد و ویژگی‌های تخصصی خاص دارند. + + مدیریت پیکربندی: برای تنظیمات مختلف در اپلیکیشن‌ها، این الگو امکان مدیریت یکنواخت ویژگی‌ها و دستکاری آسان آن‌ها را فراهم می‌کند. + + پلتفرم‌های آموزشی: انواع منابع مانند متن، ویدیو، آزمون، تکلیف که ویژگی‌های مشترکی دارند و ویژگی‌های خاص مانند مدت زمان ویدیو یا تاریخ تحویل تکلیف. + + ابزارهای مدیریت پروژه: انواع وظایف مانند to-do، milestone، issue با ویژگی‌های عمومی و خاص مثل تاریخ milestone یا اولویت issue. + + ساختار ویژگی‌ها در اسناد متنوع و در حال تغییر است. + + نیاز به افزودن ویژگی‌های جدید به‌صورت پویا رایج است. + + جداسازی دسترسی به داده از قالب‌های خاص اهمیت دارد. + + نگهداری و انعطاف‌پذیری در کد حیاتی است. + +ایده اصلی الگوی Abstract Document این است که روشی منعطف و قابل توسعه برای مدیریت موجودیت‌ها یا اسناد با ویژگی‌های مشترک و اختصاصی ارائه دهد. با تعریف یک رابط مشترک و پیاده‌سازی آن در انواع مختلف سند، می‌توان به ساختاردهی بهتر داده‌های پیچیده دست یافت. +مزایا و ملاحظات الگوی Abstract Document + +مزایا: + + انعطاف‌پذیری: پشتیبانی از ساختارهای مختلف اسناد و ویژگی‌ها + + قابلیت توسعه: افزودن ویژگی‌های جدید بدون شکستن کد فعلی + + قابلیت نگهداری: ترویج کد تمیز و قابل‌تطبیق با تفکیک وظایف + + قابلیت استفاده مجدد: دسترسی نوع‌دار به ویژگی‌ها، استفاده مجدد از کد را ممکن می‌سازد + +ملاحظات: + + پیچیدگی: نیاز به تعریف اینترفیس‌ها و نمای‌ها، بار پیاده‌سازی دارد + + عملکرد: ممکن است نسبت به دسترسی مستقیم به داده، سربار کمی داشته باشد + +منابع و اعتبارها + + Design Patterns: Elements of Reusable Object-Oriented Software + + Java Design Patterns: A Hands-On Experience with Real-World Examples + + Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing (v. 4) + + Patterns of Enterprise Application Architecture + + Abstract Document Pattern (Wikipedia) + + Dealing with Properties (Martin Fowler) \ No newline at end of file From c0d22ecea6c73bac128a7cc46b911871f283f3ec Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Thu, 17 Apr 2025 14:22:57 +0330 Subject: [PATCH 02/32] Persian Translation: Add abstract-document.png to abstract-document folder --- .../abstract-document/etc/abstract-document.png | Bin 0 -> 96228 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 localization/fa/abstract-document/etc/abstract-document.png diff --git a/localization/fa/abstract-document/etc/abstract-document.png b/localization/fa/abstract-document/etc/abstract-document.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc0b29a4e77680d8eda277c93b97277bbe7193b GIT binary patch literal 96228 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∈MtPMEwTr6eK$ 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 Date: Thu, 17 Apr 2025 15:39:07 +0330 Subject: [PATCH 03/32] Persian Translation: Add codes to README.md of abstract-document --- localization/fa/abstract-document/README.md | 259 ++++++++++++++------ 1 file changed, 186 insertions(+), 73 deletions(-) diff --git a/localization/fa/abstract-document/README.md b/localization/fa/abstract-document/README.md index beeba045f6a4..47f129ccedfa 100644 --- a/localization/fa/abstract-document/README.md +++ b/localization/fa/abstract-document/README.md @@ -1,129 +1,242 @@ -عنوان: "الگوی سند انتزاعی در جاوا: ساده‌سازی مدیریت داده با انعطاف‌پذیری" -عنوان کوتاه: Abstract Document -توضیح: "با الگوی طراحی Abstract Document در جاوا آشنا شوید. هدف، توضیح، کاربرد، مزایا و نمونه‌های دنیای واقعی برای پیاده‌سازی ساختارهای داده‌ای پویا و منعطف را بیاموزید." -دسته‌بندی : ساختاری -زبان: fa +--- +title: "الگوی Abstract Document در جاوا: ساده‌سازی مدیریت داده با انعطاف‌پذیری" +shortTitle: Abstract Document +description: "الگوی طراحی Abstract Document در جاوا را بررسی کنید. با هدف، توضیح، کاربرد، مزایا و نمونه‌های دنیای واقعی برای پیاده‌سازی ساختارهای داده‌ای پویا و انعطاف‌پذیر آشنا شوید." +category: Structural +language: fa tag: + - Abstraction + - Decoupling + - Dynamic typing + - Encapsulation + - Extensibility + - Polymorphism +--- - Abstraction +## هدف الگوی طراحی Abstract Document - Decoupling +الگوی طراحی Abstract Document در جاوا یک الگوی طراحی ساختاری مهم است که راهی یکپارچه برای مدیریت ساختارهای داده‌ای سلسله‌مراتبی و درخت‌مانند فراهم می‌کند، با تعریف یک واسط مشترک برای انواع مختلف اسناد. این الگو ساختار اصلی سند را از فرمت‌های خاص داده جدا می‌کند، که باعث به‌روزرسانی پویا و نگهداری ساده‌تر می‌شود. - Dynamic typing +## توضیح دقیق الگوی Abstract Document با نمونه‌های دنیای واقعی - Encapsulation - - Extensibility - - Polymorphism - -هدف از الگوی طراحی Abstract Document - -الگوی طراحی Abstract Document در جاوا یکی از الگوهای ساختاری مهم است که روشی یکپارچه برای مدیریت ساختارهای داده‌ای سلسله‌مراتبی و درختی فراهم می‌کند. این الگو با تعریف یک رابط مشترک برای انواع مختلف اسناد، ساختار اصلی سند را از قالب‌های داده‌ای خاص جدا می‌کند و امکان به‌روزرسانی پویا و نگهداری ساده‌تر را فراهم می‌سازد. -توضیح کامل الگوی Abstract Document همراه با مثال‌های دنیای واقعی - -الگوی Abstract Document در جاوا امکان مدیریت پویا ویژگی‌های غیراستا‌تیک را فراهم می‌سازد. این الگو از مفهوم traits استفاده می‌کند تا ایمنی نوع (type safety) را حفظ کرده و ویژگی‌های کلاس‌های مختلف را به مجموعه‌ای از اینترفیس‌ها تقسیم کند. +الگوی طراحی Abstract Document در جاوا امکان مدیریت پویا ویژگی‌های غیرثابت را فراهم می‌کند. این الگو از مفهوم traits استفاده می‌کند تا ایمنی نوع را فراهم کرده و ویژگی‌های کلاس‌های مختلف را به مجموعه‌ای از واسط‌ها تفکیک کند. مثال دنیای واقعی - یک سیستم کتابخانه را در نظر بگیرید که از الگوی Abstract Document در جاوا استفاده می‌کند، جایی که کتاب‌ها می‌توانند قالب‌ها و ویژگی‌های متنوعی داشته باشند: کتاب‌های فیزیکی، کتاب‌های الکترونیکی و کتاب‌های صوتی. هر قالب ویژگی‌های خاص خود را دارد، مانند تعداد صفحات برای کتاب‌های فیزیکی، حجم فایل برای کتاب‌های الکترونیکی و مدت زمان برای کتاب‌های صوتی. این الگو به سیستم کتابخانه اجازه می‌دهد تا این قالب‌های متنوع را به شکلی انعطاف‌پذیر مدیریت کند. با استفاده از این الگو، سیستم می‌تواند ویژگی‌ها را به‌صورت پویا ذخیره و بازیابی کند، بدون نیاز به ساختار سخت‌گیرانه برای هر نوع کتاب، و افزودن قالب‌ها یا ویژگی‌های جدید در آینده را امکان‌پذیر می‌سازد. +> فرض کنید یک سیستم کتابخانه از الگوی Abstract Document در جاوا استفاده می‌کند، جایی که کتاب‌ها می‌توانند فرمت‌ها و ویژگی‌های متنوعی داشته باشند: کتاب‌های فیزیکی، کتاب‌های الکترونیکی، و کتاب‌های صوتی. هر فرمت ویژگی‌های خاص خود را دارد، مانند تعداد صفحات برای کتاب‌های فیزیکی، اندازه فایل برای کتاب‌های الکترونیکی، و مدت‌زمان برای کتاب‌های صوتی. الگوی Abstract Document به سیستم کتابخانه اجازه می‌دهد تا این فرمت‌های متنوع را به‌صورت انعطاف‌پذیر مدیریت کند. با استفاده از این الگو، سیستم می‌تواند ویژگی‌ها را به‌صورت پویا ذخیره و بازیابی کند، بدون نیاز به ساختار سفت و سخت برای هر نوع کتاب، و این کار افزودن فرمت‌ها یا ویژگی‌های جدید را در آینده بدون تغییرات عمده در کد آسان می‌سازد. به زبان ساده - الگوی Abstract Document این امکان را می‌دهد که ویژگی‌هایی را به اشیاء اضافه کنیم بدون آنکه اشیاء از وجود این ویژگی‌ها اطلاع داشته باشند. +> الگوی Abstract Document اجازه می‌دهد ویژگی‌هایی به اشیاء متصل شوند بدون اینکه خود آن اشیاء از آن اطلاع داشته باشند. -در ویکی‌پدیا آمده است: +ویکی‌پدیا می‌گوید - یک الگوی طراحی ساختاری شی‌ء‌گرا برای سازمان‌دهی اشیاء در ساختارهای کلید-مقدار با نوع‌دهی ضعیف و نمایش داده‌ها از طریق نمای‌های نوع‌دار. هدف از این الگو دستیابی به انعطاف‌پذیری بالا بین اجزا در زبان‌های strongly typed است، به گونه‌ای که ویژگی‌های جدید را بتوان به‌صورت پویا به درخت اشیاء اضافه کرد، بدون از دست رفتن ایمنی نوع. این الگو از traits برای جدا کردن ویژگی‌های مختلف یک کلاس به اینترفیس‌های جداگانه استفاده می‌کند. +> یک الگوی طراحی ساختاری شی‌ء‌گرا برای سازماندهی اشیاء در key-value storeهای با تایپ آزاد و ارائه داده‌ها از طریق نمای دید تایپ‌شده. هدف این الگو دستیابی به انعطاف‌پذیری بالا بین اجزا در یک زبان strongly typed است که در آن بتوان ویژگی‌های جدیدی را به‌صورت پویا به ساختار درختی اشیاء اضافه کرد، بدون از دست دادن پشتیبانی از ایمنی نوع. این الگو از traits برای جداسازی ویژگی‌های مختلف یک کلاس در واسط‌های متفاوت استفاده می‌کند. نمودار کلاس -Abstract Document class diagram -نمونه برنامه‌نویسی از الگوی Abstract Document در جاوا +![Abstract Document class diagram](./etc/abstract-document.png "Abstract Document class diagram") -فرض کنید ماشینی داریم که از چندین قطعه تشکیل شده است. اما نمی‌دانیم آیا ماشین خاصی تمام این قطعات را دارد یا فقط برخی از آن‌ها را. ماشین‌های ما پویا و بسیار انعطاف‌پذیر هستند. +## مثال برنامه‌نویسی از الگوی Abstract Document در جاوا -ابتدا کلاس‌های پایه Document و AbstractDocument را تعریف می‌کنیم. این کلاس‌ها امکان نگهداری یک نقشه ویژگی‌ها (property map) و هر تعداد شیء فرزند را فراهم می‌کنند. +فرض کنید یک خودرو داریم که از قطعات مختلفی تشکیل شده است. اما نمی‌دانیم آیا این خودرو خاص واقعاً همه قطعات را دارد یا فقط برخی از آن‌ها. خودروهای ما پویا و بسیار انعطاف‌پذیر هستند. -// ... کد تغییر نکرده +بیایید ابتدا کلاس‌های پایه `Document` و `AbstractDocument` را تعریف کنیم. این کلاس‌ها اساساً یک شیء را قادر می‌سازند تا یک نقشه از ویژگی‌ها و هر تعداد شیء فرزند را نگه دارد. -در مرحله بعد، یک enum به نام Property و مجموعه‌ای از اینترفیس‌ها برای type، price، model و parts تعریف می‌کنیم. این کار امکان ایجاد رابطی شبیه به اینترفیس‌های استاتیک را برای کلاس Car فراهم می‌کند. +```java +public interface Document { + + Void put(String key, Object value); -// ... کد تغییر نکرده - -اکنون آماده‌ایم که Car را معرفی کنیم. - -// ... کد تغییر نکرده - -و در نهایت نحوه ساخت و استفاده از Car را در یک مثال کامل می‌بینیم: - -// ... کد تغییر نکرده + Object get(String key); + + Stream children(String key, Function, T> constructor); +} +public abstract class AbstractDocument implements Document { + + private final Map properties; + + protected AbstractDocument(Map properties) { + Objects.requireNonNull(properties, "properties map is required"); + this.properties = properties; + } + + @Override + public Void put(String key, Object value) { + properties.put(key, value); + return null; + } + + @Override + public Object get(String key) { + return properties.get(key); + } + + @Override + public Stream children(String key, Function, T> constructor) { + return Stream.ofNullable(get(key)) + .filter(Objects::nonNull) + .map(el -> (List>) el) + .findAny() + .stream() + .flatMap(Collection::stream) + .map(constructor); + } + + // Other properties and methods... +} +``` +در ادامه، یک enum به نام Property و مجموعه‌ای از واسط‌ها برای type، price، model و parts تعریف می‌کنیم. این کار به ما اجازه می‌دهد یک واسط با ظاهر استاتیک برای کلاس Car ایجاد کنیم. +```java +public enum Property { + + PARTS, TYPE, PRICE, MODEL +} + +public interface HasType extends Document { + + default Optional getType() { + return Optional.ofNullable((String) get(Property.TYPE.toString())); + } +} + +public interface HasPrice extends Document { + + default Optional getPrice() { + return Optional.ofNullable((Number) get(Property.PRICE.toString())); + } +} + +public interface HasModel extends Document { + + default Optional getModel() { + return Optional.ofNullable((String) get(Property.MODEL.toString())); + } +} + +public interface HasParts extends Document { + + default Stream getParts() { + return children(Property.PARTS.toString(), Part::new); + } +} + +public class Part extends AbstractDocument implements HasType, HasModel, HasPrice { + + public Part(Map properties) { + super(properties); + } +} +``` +اکنون آماده‌ایم تا کلاس Car را معرفی کنیم. +```java +public class Car extends AbstractDocument implements HasModel, HasPrice, HasParts { + + public Car(Map properties) { + super(properties); + } +} +``` +و در نهایت، نحوه ساخت و استفاده از Car را در یک مثال کامل می‌بینید. +```java + public static void main(String[] args) { + LOGGER.info("Constructing parts and car"); + + var wheelProperties = Map.of( + Property.TYPE.toString(), "wheel", + Property.MODEL.toString(), "15C", + Property.PRICE.toString(), 100L); + + var doorProperties = Map.of( + Property.TYPE.toString(), "door", + Property.MODEL.toString(), "Lambo", + Property.PRICE.toString(), 300L); + + var carProperties = Map.of( + Property.MODEL.toString(), "300SL", + Property.PRICE.toString(), 10000L, + Property.PARTS.toString(), List.of(wheelProperties, doorProperties)); + + var car = new Car(carProperties); + + LOGGER.info("Here is our car:"); + LOGGER.info("-> model: {}", car.getModel().orElseThrow()); + LOGGER.info("-> price: {}", car.getPrice().orElseThrow()); + LOGGER.info("-> parts: "); + car.getParts().forEach(p -> LOGGER.info("\t{}/{}/{}", + p.getType().orElse(null), + p.getModel().orElse(null), + p.getPrice().orElse(null)) + ); +} +``` خروجی برنامه: - -07:21:57.391 [main] INFO com.iluwatar.abstractdocument.App -- ساخت قطعات و خودرو -07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- این هم خودروی ما: -07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- -> مدل: 300SL -07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> قیمت: 10000 -07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> قطعات: +``` +07:21:57.391 [main] INFO com.iluwatar.abstractdocument.App -- Constructing parts and car +07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- Here is our car: +07:21:57.393 [main] INFO com.iluwatar.abstractdocument.App -- -> model: 300SL +07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> price: 10000 +07:21:57.394 [main] INFO com.iluwatar.abstractdocument.App -- -> parts: 07:21:57.395 [main] INFO com.iluwatar.abstractdocument.App -- wheel/15C/100 07:21:57.395 [main] INFO com.iluwatar.abstractdocument.App -- door/Lambo/300 +``` -چه زمانی از الگوی Abstract Document در جاوا استفاده کنیم؟ + ### چه زمانی از الگوی Abstract Document در جاوا استفاده کنیم؟ -الگوی طراحی Abstract Document در موقعیت‌هایی که نیاز به مدیریت انواع مختلفی از اسناد با ویژگی‌ها یا رفتارهای مشترک و در عین حال ویژگی‌های خاص دارند، بسیار مفید است. برخی کاربردهای مناسب برای این الگو: +الگوی طراحی Abstract Document به‌ویژه در سناریوهایی مفید است که نیاز به مدیریت انواع مختلفی از اسناد در جاوا وجود دارد که برخی ویژگی‌ها یا رفتارهای مشترک دارند، ولی ویژگی‌ها یا رفتارهای خاص خود را نیز دارند. در ادامه چند سناریوی مناسب برای این الگو آورده شده است: - سیستم‌های مدیریت محتوا (CMS): انواع مختلف محتوا مانند مقاله، تصویر، ویدیو و ... که برخی ویژگی‌های مشترک مانند تاریخ ایجاد، نویسنده و برچسب دارند، اما ویژگی‌های خاص خود را نیز دارند مانند ابعاد تصویر یا مدت زمان ویدیو. +* سیستم‌های مدیریت محتوا (CMS): ممکن است انواع مختلفی از محتوا مانند مقاله، تصویر، ویدئو و... وجود داشته باشد. هر نوع محتوا ویژگی‌های مشترکی مثل تاریخ ایجاد، نویسنده و تگ‌ها دارد، ولی همچنین ویژگی‌های خاصی مثل ابعاد تصویر یا مدت‌زمان ویدئو. - سیستم فایل: در طراحی فایل‌سیستمی با انواع مختلف فایل (سند، تصویر، صدا، پوشه)، این الگو امکان دسترسی منسجم به ویژگی‌هایی مانند اندازه و تاریخ ایجاد را فراهم می‌کند، در حالی که ویژگی‌های خاص نیز قابل پیاده‌سازی هستند. +* سیستم‌های فایل: اگر یک سیستم فایل طراحی می‌کنید که باید انواع مختلف فایل مانند اسناد، تصاویر، فایل‌های صوتی و دایرکتوری‌ها را مدیریت کند، این الگو می‌تواند راهی یکپارچه برای دسترسی به ویژگی‌هایی مانند اندازه فایل یا تاریخ ایجاد فراهم کند و در عین حال ویژگی‌های خاص هر نوع فایل را هم مدیریت کند. - سیستم‌های تجارت الکترونیکی: انواع مختلف محصول مانند فیزیکی، دیجیتالی و اشتراکی که ویژگی‌های مشترک مانند نام، قیمت، توضیح دارند و ویژگی‌های خاص مانند وزن حمل برای فیزیکی یا لینک دانلود برای دیجیتال. +* سیستم‌های تجارت الکترونیک: یک پلتفرم فروش آنلاین ممکن است محصولات مختلفی داشته باشد مثل محصولات فیزیکی، فایل‌های دیجیتال، و اشتراک‌ها. این محصولات ویژگی‌هایی مثل نام، قیمت و توضیح را به اشتراک می‌گذارند، ولی ویژگی‌های خاصی هم دارند مانند وزن حمل برای محصولات فیزیکی یا لینک دانلود برای دیجیتال‌ها. - سیستم‌های سوابق پزشکی: سوابق بیمار با انواع داده مانند اطلاعات فردی، سوابق پزشکی، نتایج آزمایش‌ها و نسخه‌ها که ویژگی‌های مشترکی مانند شناسه بیمار و تاریخ تولد و ویژگی‌های تخصصی خاص دارند. +* سیستم‌های سوابق پزشکی: در مراقبت سلامت، پرونده بیماران ممکن است داده‌های مختلفی مثل مشخصات فردی، سوابق پزشکی، نتایج آزمایش‌ها و نسخه‌ها را شامل شود. این الگو می‌تواند ویژگی‌های مشترک مثل شماره بیمار یا تاریخ تولد را مدیریت کند و هم‌زمان ویژگی‌های خاصی مثل نتایج آزمایش یا داروهای تجویزی را هم پوشش دهد. - مدیریت پیکربندی: برای تنظیمات مختلف در اپلیکیشن‌ها، این الگو امکان مدیریت یکنواخت ویژگی‌ها و دستکاری آسان آن‌ها را فراهم می‌کند. +* مدیریت پیکربندی: هنگام کار با تنظیمات پیکربندی نرم‌افزار، ممکن است انواع مختلفی از عناصر پیکربندی وجود داشته باشد، هر یک با ویژگی‌های خاص خود. این الگو می‌تواند برای مدیریت این عناصر مفید باشد. - پلتفرم‌های آموزشی: انواع منابع مانند متن، ویدیو، آزمون، تکلیف که ویژگی‌های مشترکی دارند و ویژگی‌های خاص مانند مدت زمان ویدیو یا تاریخ تحویل تکلیف. +* پلتفرم‌های آموزشی: سیستم‌های آموزشی ممکن است انواع مختلفی از منابع یادگیری داشته باشند مثل محتوای متنی، ویدیوها، آزمون‌ها و تمرین‌ها. ویژگی‌های مشترکی مثل عنوان، نویسنده و تاریخ انتشار وجود دارد، ولی ویژگی‌های خاصی مانند مدت ویدیو یا مهلت تحویل تمرین نیز ممکن است وجود داشته باشد. - ابزارهای مدیریت پروژه: انواع وظایف مانند to-do، milestone، issue با ویژگی‌های عمومی و خاص مثل تاریخ milestone یا اولویت issue. +* ابزارهای مدیریت پروژه: در برنامه‌های مدیریت پروژه، ممکن است انواع مختلفی از وظایف مانند آیتم‌های to-do، milestoneها و issueها داشته باشید. این الگو می‌تواند برای مدیریت ویژگی‌های عمومی مانند نام وظیفه و مسئول آن استفاده شود و در عین حال ویژگی‌های خاص مانند تاریخ milestone یا اولویت issue را نیز پوشش دهد. - ساختار ویژگی‌ها در اسناد متنوع و در حال تغییر است. +* اسناد ساختار ویژگی‌های متنوع و در حال تحول دارند. - نیاز به افزودن ویژگی‌های جدید به‌صورت پویا رایج است. +* افزودن ویژگی‌های جدید به‌صورت پویا یک نیاز رایج است. - جداسازی دسترسی به داده از قالب‌های خاص اهمیت دارد. +* جداسازی دسترسی به داده از فرمت‌های خاص حیاتی است. - نگهداری و انعطاف‌پذیری در کد حیاتی است. +* نگهداری‌پذیری و انعطاف‌پذیری برای کد اهمیت دارد. -ایده اصلی الگوی Abstract Document این است که روشی منعطف و قابل توسعه برای مدیریت موجودیت‌ها یا اسناد با ویژگی‌های مشترک و اختصاصی ارائه دهد. با تعریف یک رابط مشترک و پیاده‌سازی آن در انواع مختلف سند، می‌توان به ساختاردهی بهتر داده‌های پیچیده دست یافت. -مزایا و ملاحظات الگوی Abstract Document +ایده اصلی پشت الگوی Abstract Document فراهم کردن روشی انعطاف‌پذیر و قابل توسعه برای مدیریت انواع مختلف اسناد یا موجودیت‌ها با ویژگی‌های مشترک و خاص است. با تعریف یک واسط مشترک و پیاده‌سازی آن در انواع مختلف اسناد، می‌توان به شیوه‌ای منظم و یکپارچه برای مدیریت ساختارهای پیچیده داده دست یافت. +### مزایا و معایب الگوی Abstract Document مزایا: - انعطاف‌پذیری: پشتیبانی از ساختارهای مختلف اسناد و ویژگی‌ها +* انعطاف‌پذیری: پشتیبانی از ساختارهای متنوع اسناد و ویژگی‌ها. - قابلیت توسعه: افزودن ویژگی‌های جدید بدون شکستن کد فعلی +* قابلیت توسعه: افزودن ویژگی‌های جدید بدون شکستن کد موجود. - قابلیت نگهداری: ترویج کد تمیز و قابل‌تطبیق با تفکیک وظایف +* نگهداری‌پذیری: ارتقاء کد تمیز و قابل تطبیق به‌واسطه جداسازی وظایف. - قابلیت استفاده مجدد: دسترسی نوع‌دار به ویژگی‌ها، استفاده مجدد از کد را ممکن می‌سازد +* قابلیت استفاده مجدد: نمای دید تایپ‌شده باعث استفاده مجدد از کد برای دسترسی به نوع خاصی از ویژگی می‌شود. -ملاحظات: +معایب: - پیچیدگی: نیاز به تعریف اینترفیس‌ها و نمای‌ها، بار پیاده‌سازی دارد +* پیچیدگی: نیاز به تعریف واسط‌ها و نماها، که باعث اضافه شدن سربار پیاده‌سازی می‌شود. - عملکرد: ممکن است نسبت به دسترسی مستقیم به داده، سربار کمی داشته باشد +* کارایی: ممکن است سربار کمی نسبت به دسترسی مستقیم به داده داشته باشد. منابع و اعتبارها - Design Patterns: Elements of Reusable Object-Oriented Software +* Design Patterns: Elements of Reusable Object-Oriented Software - Java Design Patterns: A Hands-On Experience with Real-World Examples +* Java Design Patterns: A Hands-On Experience with Real-World Examples - Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing (v. 4) +* Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing (v. 4) - Patterns of Enterprise Application Architecture +* Patterns of Enterprise Application Architecture - Abstract Document Pattern (Wikipedia) +* Abstract Document Pattern (Wikipedia) - Dealing with Properties (Martin Fowler) \ No newline at end of file +* Dealing with Properties (Martin Fowler) From c91155ba9b83463c2fea3f33e094d0eeb2dcaa3d Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Fri, 18 Apr 2025 09:50:22 +0330 Subject: [PATCH 04/32] Persian Translation: some improvements in abstract-document --- localization/fa/abstract-document/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/localization/fa/abstract-document/README.md b/localization/fa/abstract-document/README.md index 47f129ccedfa..87d1ef8ffa82 100644 --- a/localization/fa/abstract-document/README.md +++ b/localization/fa/abstract-document/README.md @@ -15,15 +15,15 @@ tag: ## هدف الگوی طراحی Abstract Document -الگوی طراحی Abstract Document در جاوا یک الگوی طراحی ساختاری مهم است که راهی یکپارچه برای مدیریت ساختارهای داده‌ای سلسله‌مراتبی و درخت‌مانند فراهم می‌کند، با تعریف یک واسط مشترک برای انواع مختلف اسناد. این الگو ساختار اصلی سند را از فرمت‌های خاص داده جدا می‌کند، که باعث به‌روزرسانی پویا و نگهداری ساده‌تر می‌شود. +الگوی طراحی Abstract Document در جاوا یک الگوی طراحی ساختاری مهم است که راهی یکپارچه برای مدیریت ساختارهای داده‌ای سلسله‌مراتبی و درخت‌ی فراهم می‌کند، با تعریف یک واسط مشترک برای انواع مختلف اسناد. این الگو ساختار اصلی سند را از فرمت‌های خاص داده جدا می‌کند، که باعث به‌روزرسانی پویا و نگهداری ساده‌تر می‌شود. ## توضیح دقیق الگوی Abstract Document با نمونه‌های دنیای واقعی -الگوی طراحی Abstract Document در جاوا امکان مدیریت پویا ویژگی‌های غیرثابت را فراهم می‌کند. این الگو از مفهوم traits استفاده می‌کند تا ایمنی نوع را فراهم کرده و ویژگی‌های کلاس‌های مختلف را به مجموعه‌ای از واسط‌ها تفکیک کند. +الگوی طراحی Abstract Document در جاوا امکان مدیریت پویا ویژگی‌های پویا(غیر استاتیک) را فراهم می‌کند. این الگو از مفهوم traits استفاده می‌کند تا ایمنی نوع‌داده (type safety) را فراهم کرده و ویژگی‌های کلاس‌های مختلف را به مجموعه‌ای از واسط‌ها تفکیک کند. مثال دنیای واقعی -> فرض کنید یک سیستم کتابخانه از الگوی Abstract Document در جاوا استفاده می‌کند، جایی که کتاب‌ها می‌توانند فرمت‌ها و ویژگی‌های متنوعی داشته باشند: کتاب‌های فیزیکی، کتاب‌های الکترونیکی، و کتاب‌های صوتی. هر فرمت ویژگی‌های خاص خود را دارد، مانند تعداد صفحات برای کتاب‌های فیزیکی، اندازه فایل برای کتاب‌های الکترونیکی، و مدت‌زمان برای کتاب‌های صوتی. الگوی Abstract Document به سیستم کتابخانه اجازه می‌دهد تا این فرمت‌های متنوع را به‌صورت انعطاف‌پذیر مدیریت کند. با استفاده از این الگو، سیستم می‌تواند ویژگی‌ها را به‌صورت پویا ذخیره و بازیابی کند، بدون نیاز به ساختار سفت و سخت برای هر نوع کتاب، و این کار افزودن فرمت‌ها یا ویژگی‌های جدید را در آینده بدون تغییرات عمده در کد آسان می‌سازد. +> فرض کنید یک سیستم کتابخانه از الگوی Abstract Document در جاوا استفاده می‌کند، جایی که کتاب‌ها می‌توانند فرمت‌ها و ویژگی‌های متنوعی داشته باشند: کتاب‌های فیزیکی، کتاب‌های الکترونیکی، و کتاب‌های صوتی. هر فرمت ویژگی‌های خاص خود را دارد، مانند تعداد صفحات برای کتاب‌های فیزیکی، حجم فایل برای کتاب‌های الکترونیکی، و مدت‌زمان برای کتاب‌های صوتی. الگوی Abstract Document به سیستم کتابخانه اجازه می‌دهد تا این فرمت‌های متنوع را به‌صورت انعطاف‌پذیر مدیریت کند. با استفاده از این الگو، سیستم می‌تواند ویژگی‌ها را به‌صورت پویا ذخیره و بازیابی کند، بدون نیاز به ساختار سفت و سخت برای هر نوع کتاب، و این کار افزودن فرمت‌ها یا ویژگی‌های جدید را در آینده بدون تغییرات عمده در کد آسان می‌سازد. به زبان ساده @@ -31,7 +31,7 @@ tag: ویکی‌پدیا می‌گوید -> یک الگوی طراحی ساختاری شی‌ء‌گرا برای سازماندهی اشیاء در key-value storeهای با تایپ آزاد و ارائه داده‌ها از طریق نمای دید تایپ‌شده. هدف این الگو دستیابی به انعطاف‌پذیری بالا بین اجزا در یک زبان strongly typed است که در آن بتوان ویژگی‌های جدیدی را به‌صورت پویا به ساختار درختی اشیاء اضافه کرد، بدون از دست دادن پشتیبانی از ایمنی نوع. این الگو از traits برای جداسازی ویژگی‌های مختلف یک کلاس در واسط‌های متفاوت استفاده می‌کند. +> یک الگوی طراحی ساختاری شی‌ء‌گرا برای سازماندهی اشیاء در کلید-مقدارهایی با تایپ آزاد و ارائه داده‌ها از طریق نمای تایپ است. هدف این الگو دستیابی به انعطاف‌پذیری بالا بین اجزا در یک زبان strongly typed است که در آن بتوان ویژگی‌های جدیدی را به‌صورت پویا به ساختار درختی اشیاء اضافه کرد، بدون از دست دادن پشتیبانی از type safety. این الگو از traits برای جداسازی ویژگی‌های مختلف یک کلاس در اینترفیس‌های متفاوت استفاده می‌کند. نمودار کلاس @@ -186,9 +186,9 @@ public class Car extends AbstractDocument implements HasModel, HasPrice, HasPart الگوی طراحی Abstract Document به‌ویژه در سناریوهایی مفید است که نیاز به مدیریت انواع مختلفی از اسناد در جاوا وجود دارد که برخی ویژگی‌ها یا رفتارهای مشترک دارند، ولی ویژگی‌ها یا رفتارهای خاص خود را نیز دارند. در ادامه چند سناریوی مناسب برای این الگو آورده شده است: -* سیستم‌های مدیریت محتوا (CMS): ممکن است انواع مختلفی از محتوا مانند مقاله، تصویر، ویدئو و... وجود داشته باشد. هر نوع محتوا ویژگی‌های مشترکی مثل تاریخ ایجاد، نویسنده و تگ‌ها دارد، ولی همچنین ویژگی‌های خاصی مثل ابعاد تصویر یا مدت‌زمان ویدئو. +* سیستم‌های مدیریت محتوا (CMS): ممکن است انواع مختلفی از محتوا مانند مقاله، تصویر، ویدئو و... وجود داشته باشد. هر نوع محتوا ویژگی‌های مشترکی مثل تاریخ ایجاد، نویسنده و تگ‌ها دارد، ولی همچنین ویژگی‌های خاصی مثل ابعاد تصویر یا مدت‌زمان ویدئو. -* سیستم‌های فایل: اگر یک سیستم فایل طراحی می‌کنید که باید انواع مختلف فایل مانند اسناد، تصاویر، فایل‌های صوتی و دایرکتوری‌ها را مدیریت کند، این الگو می‌تواند راهی یکپارچه برای دسترسی به ویژگی‌هایی مانند اندازه فایل یا تاریخ ایجاد فراهم کند و در عین حال ویژگی‌های خاص هر نوع فایل را هم مدیریت کند. +* سیستم‌های فایل: اگر یک سیستم فایل طراحی می‌کنید که باید انواع مختلف فایل مانند اسناد، تصاویر، فایل‌های صوتی و دایرکتوری‌ها را مدیریت کند، این الگو می‌تواند راهی یکپارچه برای دسترسی به ویژگی‌هایی مانند اندازه فایل یا تاریخ ایجاد، فراهم کند و در عین حال ویژگی‌های خاص هر نوع فایل را هم مدیریت کند. * سیستم‌های تجارت الکترونیک: یک پلتفرم فروش آنلاین ممکن است محصولات مختلفی داشته باشد مثل محصولات فیزیکی، فایل‌های دیجیتال، و اشتراک‌ها. این محصولات ویژگی‌هایی مثل نام، قیمت و توضیح را به اشتراک می‌گذارند، ولی ویژگی‌های خاصی هم دارند مانند وزن حمل برای محصولات فیزیکی یا لینک دانلود برای دیجیتال‌ها. From 70c74d591f49ae7572b596233416efa57b68968a Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Fri, 18 Apr 2025 09:56:52 +0330 Subject: [PATCH 05/32] Persian Translation: Add refrence links in abstract-document --- localization/fa/abstract-document/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/localization/fa/abstract-document/README.md b/localization/fa/abstract-document/README.md index 87d1ef8ffa82..1c1f21cbdce1 100644 --- a/localization/fa/abstract-document/README.md +++ b/localization/fa/abstract-document/README.md @@ -229,14 +229,14 @@ public class Car extends AbstractDocument implements HasModel, HasPrice, HasPart منابع و اعتبارها -* Design Patterns: Elements of Reusable Object-Oriented Software +* [Design Patterns: Elements of Reusable Object-Oriented Software](https://amzn.to/3w0pvKI) -* Java Design Patterns: A Hands-On Experience with Real-World Examples +* [Java Design Patterns: A Hands-On Experience with Real-World Examples](https://amzn.to/3yhh525) -* Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing (v. 4) +* [Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing (v. 4)] (https://amzn.to/49zRP4R) -* Patterns of Enterprise Application Architecture +* [Patterns of Enterprise Application Architecture] (https://amzn.to/3WfKBPR) -* Abstract Document Pattern (Wikipedia) +* [Abstract Document Pattern (Wikipedia)] (https://en.wikipedia.org/wiki/Abstract_Document_Pattern) -* Dealing with Properties (Martin Fowler) +* [Dealing with Properties (Martin Fowler)] (http://martinfowler.com/apsupp/properties.pdf) From 70a34b1135e85bcfc73fad02774909a988c98242 Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Fri, 18 Apr 2025 10:02:12 +0330 Subject: [PATCH 06/32] Persian Translation: add rtl tag in abstract-document --- localization/fa/abstract-document/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/localization/fa/abstract-document/README.md b/localization/fa/abstract-document/README.md index 1c1f21cbdce1..7097ffc8b4ea 100644 --- a/localization/fa/abstract-document/README.md +++ b/localization/fa/abstract-document/README.md @@ -210,7 +210,7 @@ public class Car extends AbstractDocument implements HasModel, HasPrice, HasPart ایده اصلی پشت الگوی Abstract Document فراهم کردن روشی انعطاف‌پذیر و قابل توسعه برای مدیریت انواع مختلف اسناد یا موجودیت‌ها با ویژگی‌های مشترک و خاص است. با تعریف یک واسط مشترک و پیاده‌سازی آن در انواع مختلف اسناد، می‌توان به شیوه‌ای منظم و یکپارچه برای مدیریت ساختارهای پیچیده داده دست یافت. ### مزایا و معایب الگوی Abstract Document - +
مزایا: * انعطاف‌پذیری: پشتیبانی از ساختارهای متنوع اسناد و ویژگی‌ها. @@ -226,6 +226,7 @@ public class Car extends AbstractDocument implements HasModel, HasPrice, HasPart * پیچیدگی: نیاز به تعریف واسط‌ها و نماها، که باعث اضافه شدن سربار پیاده‌سازی می‌شود. * کارایی: ممکن است سربار کمی نسبت به دسترسی مستقیم به داده داشته باشد. +
منابع و اعتبارها From c3cf012cab6f1dad9b91e5ae28ffa82a61d9fe11 Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Sun, 20 Apr 2025 19:09:53 +0330 Subject: [PATCH 07/32] -added persian translation of factory pattern --- localization/fa/factory/README.rtl.md | 155 ++++++++++++++++++ .../factory/etc/factory-sequence-diagram.png | Bin 0 -> 29457 bytes 2 files changed, 155 insertions(+) create mode 100644 localization/fa/factory/README.rtl.md create mode 100644 localization/fa/factory/etc/factory-sequence-diagram.png diff --git a/localization/fa/factory/README.rtl.md b/localization/fa/factory/README.rtl.md new file mode 100644 index 000000000000..84e05328a7a3 --- /dev/null +++ b/localization/fa/factory/README.rtl.md @@ -0,0 +1,155 @@ +--- +--- +title: "الگوی factory در جاوا: ساده‌سازی ایجاد اشیاء" +shortTitle: factory +description: "الگوی طراحی factory در جاوا را با مثال‌ها و توضیحات دقیق بیاموزید. یاد بگیرید چگونه با استفاده از الگوی factory کدی انعطاف‌پذیر و مقیاس‌پذیر ایجاد کنید. مناسب برای توسعه‌دهندگانی که به دنبال بهبود مهارت‌های طراحی شیءگرا هستند." +category: structural +language: fa +tag: + - انتزاع + - کپسوله‌سازی + - گروه چهار نفره + - نمونه‌سازی + - چندریختی +--- + +## هدف از الگوی طراحی factory + +الگوی طراحی factory در جاوا یک الگوی ساختاری است که یک رابط برای ایجاد یک شیء تعریف می‌کند اما به زیرکلاس‌ها اجازه می‌دهد نوع اشیائی را که ایجاد خواهند شد تغییر دهند. این الگو انعطاف‌پذیری و مقیاس‌پذیری را در کد شما ترویج می‌دهد. + +## توضیح دقیق الگوی factory با مثال‌های دنیای واقعی + +### مثال دنیای واقعی + +> تصور کنید در یک نانوایی انواع مختلف کیک‌ها با استفاده از الگوی طراحی factory ساخته می‌شوند. `CakeFactory` فرآیند ایجاد را مدیریت می‌کند و امکان افزودن آسان انواع جدید کیک‌ها را بدون تغییر در فرآیند اصلی فراهم می‌کند. `CakeFactory` می‌تواند انواع مختلفی از کیک‌ها مانند کیک شکلاتی، کیک وانیلی و کیک توت‌فرنگی تولید کند. به جای اینکه کارکنان نانوایی به صورت دستی مواد اولیه را انتخاب کنند و دستورالعمل‌های خاصی را برای هر نوع کیک دنبال کنند، از `CakeFactory` برای مدیریت فرآیند استفاده می‌کنند. مشتری فقط نوع کیک را درخواست می‌کند و `CakeFactory` مواد اولیه و دستورالعمل مناسب را تعیین کرده و نوع خاصی از کیک را ایجاد می‌کند. این تنظیم به نانوایی اجازه می‌دهد تا انواع جدید کیک‌ها را به راحتی اضافه کند بدون اینکه فرآیند اصلی تغییر کند، که این امر انعطاف‌پذیری و مقیاس‌پذیری را ترویج می‌دهد. + +### تعریف ویکی‌پدیا + +> factory یک شیء برای ایجاد اشیاء دیگر است – به طور رسمی، factory یک تابع یا متدی است که اشیاء با نمونه‌ها یا کلاس‌های مختلف را بازمی‌گرداند. + +### نمودار توالی + +![نمودار توالی factory](./etc/factory-sequence-diagram.png) + +## مثال برنامه‌نویسی از الگوی factory در جاوا + +تصور کنید یک کیمیاگر قصد دارد سکه‌هایی تولید کند. کیمیاگر باید بتواند هم سکه‌های طلا و هم سکه‌های مسی ایجاد کند و تغییر بین آن‌ها باید بدون تغییر در کد موجود امکان‌پذیر باشد. الگوی factory این امکان را فراهم می‌کند با ارائه یک متد ایجاد استاتیک که می‌توان آن را با پارامترهای مرتبط فراخوانی کرد. + +در جاوا، می‌توانید الگوی factory را با تعریف یک رابط `Coin` و پیاده‌سازی‌های آن `GoldCoin` و `CopperCoin` پیاده‌سازی کنید. کلاس `CoinFactory` یک متد استاتیک `getCoin` ارائه می‌دهد تا اشیاء سکه را بر اساس نوع ایجاد کند. + +```java +public interface Coin { + String getDescription(); +} +``` + +```java +public class GoldCoin implements Coin { + + static final String DESCRIPTION = "This is a gold coin."; + + @Override + public String getDescription() { + return DESCRIPTION; + } +} +``` + +```java +public class CopperCoin implements Coin { + + static final String DESCRIPTION = "This is a copper coin."; + + @Override + public String getDescription() { + return DESCRIPTION; + } +} +``` + +کد زیر انواع سکه‌هایی که پشتیبانی می‌شوند (`GoldCoin` و `CopperCoin`) را نشان می‌دهد. + +```java +@RequiredArgsConstructor +@Getter +public enum CoinType { + + COPPER(CopperCoin::new), + GOLD(GoldCoin::new); + + private final Supplier constructor; +} +``` + +سپس متد استاتیک `getCoin` برای ایجاد اشیاء سکه در کلاس factory `CoinFactory` کپسوله شده است. + +```java +public class CoinFactory { + + public static Coin getCoin(CoinType type) { + return type.getConstructor().get(); + } +} +``` + +اکنون، در کد کلاینت، می‌توانیم انواع مختلفی از سکه‌ها را با استفاده از کلاس factory تولید کنیم. + +```java +public static void main(String[] args) { + LOGGER.info("The alchemist begins his work."); + var coin1 = CoinFactory.getCoin(CoinType.COPPER); + var coin2 = CoinFactory.getCoin(CoinType.GOLD); + LOGGER.info(coin1.getDescription()); + LOGGER.info(coin2.getDescription()); +} +``` + +خروجی برنامه: + +``` +06:19:53.530 [main] INFO com.iluwatar.factory.App -- The alchemist begins his work. +06:19:53.533 [main] INFO com.iluwatar.factory.App -- This is a copper coin. +06:19:53.533 [main] INFO com.iluwatar.factory.App -- This is a gold coin. +``` + +## زمان استفاده از الگوی factory در جاوا + +* از الگوی طراحی factory در جاوا زمانی استفاده کنید که کلاس از قبل نوع دقیق و وابستگی‌های اشیائی که نیاز به ایجاد آن دارد را نمی‌داند. +* زمانی که یک متد یکی از چندین کلاس ممکن که یک کلاس والد مشترک دارند را بازمی‌گرداند و می‌خواهد منطق انتخاب شیء را کپسوله کند. +* این الگو معمولاً هنگام طراحی فریم‌ورک‌ها یا کتابخانه‌ها برای ارائه بهترین انعطاف‌پذیری و جداسازی از انواع کلاس‌های خاص استفاده می‌شود. + +## کاربردهای دنیای واقعی الگوی factory در جاوا + +* [java.util.Calendar#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#getInstance--) +* [java.util.ResourceBundle#getBundle()](https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-) +* [java.text.NumberFormat#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getInstance--) +* [java.nio.charset.Charset#forName()](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html#forName-java.lang.String-) +* [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) (اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند) +* [java.util.EnumSet#of()](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html#of(E)) +* [javax.xml.bind.JAXBContext#createMarshaller()](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXBContext.html#createMarshaller--) و متدهای مشابه دیگر. +* JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. + +## مزایا و معایب الگوی factory + +### مزایا: + +* پیاده‌سازی الگوی factory در برنامه جاوای شما، وابستگی بین پیاده‌سازی و کلاس‌هایی که استفاده می‌کند را کاهش می‌دهد. +* از [اصل Open/Closed](https://java-design-patterns.com/principles/#open-closed-principle) پشتیبانی می‌کند، زیرا سیستم می‌تواند انواع جدیدی را بدون تغییر کد موجود معرفی کند. + +### معایب: + +* کد می‌تواند به دلیل معرفی چندین کلاس اضافی پیچیده‌تر شود. +* استفاده بیش از حد می‌تواند کد را کمتر خوانا کند اگر پیچیدگی ایجاد اشیاء کم یا غیرضروری باشد. + +## الگوهای طراحی مرتبط با جاوا + +* [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. +* [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. +* [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. +* [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. + +## منابع و اعتبارات + +* [Design Patterns: Elements of Reusable Object-Oriented Software](https://amzn.to/3w0Rk5y) +* [Effective Java](https://amzn.to/4cGk2Jz) +* [Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software](https://amzn.to/3UpTLrG) \ No newline at end of file diff --git a/localization/fa/factory/etc/factory-sequence-diagram.png b/localization/fa/factory/etc/factory-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..260bea92f24736656584c4714398e47e2dbb61c2 GIT binary patch literal 29457 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

a2pE@iOs1kiD%Yk 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�=nt6c0Wf(41WEl3CS?Fjz#jnoc5nbbUbAIJDWn@L{tc!TV#TiY z-jc$6dR|Wz90hHqI3IG5A literal 0 HcmV?d00001 From 63c202989c8d13c9822401227b72c36797eea712 Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Sun, 20 Apr 2025 19:55:18 +0330 Subject: [PATCH 08/32] -renamed file --- localization/fa/factory/{README.rtl.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename localization/fa/factory/{README.rtl.md => README.md} (100%) diff --git a/localization/fa/factory/README.rtl.md b/localization/fa/factory/README.md similarity index 100% rename from localization/fa/factory/README.rtl.md rename to localization/fa/factory/README.md From 09cbf28e197818b47ce426d0fadac3d2a7623e2c Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Sun, 20 Apr 2025 20:36:14 +0330 Subject: [PATCH 09/32] -changed wikipedia definition --- localization/fa/factory/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index 84e05328a7a3..fcd46187efa2 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -25,7 +25,7 @@ tag: ### تعریف ویکی‌پدیا -> factory یک شیء برای ایجاد اشیاء دیگر است – به طور رسمی، factory یک تابع یا متدی است که اشیاء با نمونه‌ها یا کلاس‌های مختلف را بازمی‌گرداند. +> الگوی factory یک شیء برای ایجاد اشیاء دیگر است – به طور رسمی، factory یک تابع یا متدی است که اشیاء با نمونه‌ها یا کلاس‌های مختلف را بازمی‌گرداند. ### نمودار توالی From 1f72edf19eb93d3c7a45b1aecfbdfad48845021e Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Sun, 20 Apr 2025 20:37:08 +0330 Subject: [PATCH 10/32] -fixed table problem --- localization/fa/factory/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index fcd46187efa2..8e1d5a87c6af 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -1,5 +1,4 @@ --- ---- title: "الگوی factory در جاوا: ساده‌سازی ایجاد اشیاء" shortTitle: factory description: "الگوی طراحی factory در جاوا را با مثال‌ها و توضیحات دقیق بیاموزید. یاد بگیرید چگونه با استفاده از الگوی factory کدی انعطاف‌پذیر و مقیاس‌پذیر ایجاد کنید. مناسب برای توسعه‌دهندگانی که به دنبال بهبود مهارت‌های طراحی شیءگرا هستند." From 0943a856692454150001d79e057b3f2f68ae0350 Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Mon, 21 Apr 2025 06:35:24 +0330 Subject: [PATCH 11/32] active-object : translate --- localization/fa/active-object/README.md | 237 ++++++++++++++++++ .../etc/active-object-sequence-diagram.png | Bin 0 -> 83490 bytes .../active-object/etc/active-object.urm.png | Bin 0 -> 19466 bytes .../active-object/etc/active-object.urm.puml | 25 ++ 4 files changed, 262 insertions(+) create mode 100644 localization/fa/active-object/README.md create mode 100644 localization/fa/active-object/etc/active-object-sequence-diagram.png create mode 100644 localization/fa/active-object/etc/active-object.urm.png create mode 100644 localization/fa/active-object/etc/active-object.urm.puml diff --git a/localization/fa/active-object/README.md b/localization/fa/active-object/README.md new file mode 100644 index 000000000000..ab9808d77a2f --- /dev/null +++ b/localization/fa/active-object/README.md @@ -0,0 +1,237 @@ +--- +title: "الگوی Active Object در جاوا: دستیابی به پردازش ناهمگام کارآمد" +shortTitle: Active Object +description: "با الگوی طراحی Active Object در جاوا آشنا شوید. این راهنما رفتار ناهمگام، هم‌زمانی (concurrency) و مثال‌های کاربردی برای بهبود عملکرد برنامه‌های جاوای شما را پوشش می‌دهد." +category: Concurrency +language: fa +tag: + - Asynchronous + - Decoupling + - Messaging + - Synchronization + - Thread management +--- + +## هدف الگوی طراحی Active Object + +الگوی Active Object روشی مطمئن برای پردازش ناهمگام در جاوا فراهم می‌کند که به پاسخ‌گو بودن برنامه‌ها و مدیریت مؤثر threadها کمک می‌کند. این الگو با محصور کردن وظایف در شیءهایی که هر کدام thread و صف پیام مخصوص خود را دارند، به این هدف می‌رسد. این جداسازی باعث می‌شود thread اصلی پاسخ‌گو باقی بماند و مشکلاتی مانند دست‌کاری مستقیم threadها یا دسترسی به وضعیت مشترک (shared state) به وجود نیاید. + +## توضیح کامل الگوی Active Object با مثال‌های دنیای واقعی + +مثال دنیای واقعی + +> تصور کنید در یک رستوران شلوغ، مشتریان سفارش خود را به گارسون‌ها می‌سپارند. به‌جای آنکه گارسون‌ها خودشان به آشپزخانه بروند و غذا را آماده کنند، سفارش‌ها را روی کاغذهایی می‌نویسند و به یک هماهنگ‌کننده می‌دهند. این هماهنگ‌کننده گروهی از سرآشپزها را مدیریت می‌کند که غذاها را به صورت ناهمگام آماده می‌کنند. هرگاه آشپزی آزاد شود، سفارش بعدی را از صف برمی‌دارد، غذا را آماده می‌کند و پس از آن گارسون را برای سرو غذا مطلع می‌سازد. +> +> در این قیاس، گارسون‌ها نماینده threadهای کلاینت هستند، هماهنگ‌کننده نقش زمان‌بند (scheduler) را ایفا می‌کند، و آشپزها نمایان‌گر اجرای متدها در threadهای جداگانه هستند. این ساختار باعث می‌شود گارسون‌ها بتوانند بدون مسدود شدن توسط فرایند آماده‌سازی غذا، سفارش‌های بیشتری دریافت کنند—درست مانند اینکه الگوی Active Object، فراخوانی متد را از اجرای آن جدا می‌کند تا هم‌زمانی (concurrency) را افزایش دهد. + +به زبان ساده + +> الگوی Active Object، اجرای متد را از فراخوانی آن جدا می‌کند تا در برنامه‌های چندریسمانی (multithreaded)، هم‌زمانی و پاسخ‌گویی بهتری فراهم شود. + +طبق تعریف ویکی‌پدیا + +> الگوی طراحی Active Object اجرای متد را از فراخوانی آن جدا می‌کند، برای شیءهایی که هرکدام thread کنترل مخصوص به خود را دارند. هدف، معرفی هم‌زمانی با استفاده از فراخوانی متد به‌صورت ناهمگام و یک زمان‌بند برای مدیریت درخواست‌ها است. +> +> این الگو شامل شش جزء کلیدی است: +> +> * یک proxy، که رابطی برای کلاینت‌ها با متدهای عمومی فراهم می‌کند. +> * یک interface که درخواست متد برای شیء فعال (active object) را تعریف می‌کند. +> * فهرستی از درخواست‌های معلق از سوی کلاینت‌ها. +> * یک زمان‌بند (scheduler) که تصمیم می‌گیرد کدام درخواست بعدی اجرا شود. +> * پیاده‌سازی متد شیء فعال. +> * یک callback یا متغیر برای اینکه کلاینت نتیجه را دریافت کند. + +نمودار توالی + +![Active Object sequence diagram](./etc/active-object-sequence-diagram.png) + +## مثال برنامه‌نویسی از Active Object در جاوا + +این بخش نحوه عملکرد الگوی Active Object در جاوا را توضیح می‌دهد و کاربرد آن در مدیریت وظایف ناهمگام و کنترل هم‌زمانی را نشان می‌دهد. + +اورک‌ها به دلیل ذات وحشی و غیرقابل مهارشان شناخته می‌شوند. به‌نظر می‌رسد هرکدام thread کنترل مخصوص خود را دارند. برای پیاده‌سازی یک موجود که دارای سازوکار thread مستقل خود باشد و فقط API را در اختیار قرار دهد نه اجرای داخلی را، می‌توان از الگوی Active Object استفاده کرد. + +```java +public abstract class ActiveCreature { + private final Logger logger = LoggerFactory.getLogger(ActiveCreature.class.getName()); + + private BlockingQueue requests; + + private String name; + + private Thread thread; + + public ActiveCreature(String name) { + this.name = name; + this.requests = new LinkedBlockingQueue(); + thread = new Thread(new Runnable() { + @Override + public void run() { + while (true) { + try { + requests.take().run(); + } catch (InterruptedException e) { + logger.error(e.getMessage()); + } + } + } + } + ); + thread.start(); + } + + public void eat() throws InterruptedException { + requests.put(new Runnable() { + @Override + public void run() { + logger.info("{} is eating!", name()); + logger.info("{} has finished eating!", name()); + } + } + ); + } + + public void roam() throws InterruptedException { + requests.put(new Runnable() { + @Override + public void run() { + logger.info("{} has started to roam the wastelands.", name()); + } + } + ); + } + + public String name() { + return this.name; + } +} +``` + +می‌توان دید هر کلاسی که از ActiveCreature ارث‌بری کند، دارای thread کنترل مختص به خود برای فراخوانی و اجرای متدها خواهد بود. + +برای مثال، کلاس Orc: + +```java +public class Orc extends ActiveCreature { + + public Orc(String name) { + super(name); + } +} + +اکنون می‌توان چند موجود مانند orc ایجاد کرد، به آن‌ها دستور داد که بخورند و پرسه بزنند، و آن‌ها این دستورات را در thread مختص به خود اجرا می‌کنند: + +```java +public class App implements Runnable { + + private static final Logger logger = LoggerFactory.getLogger(App.class.getName()); + + private static final int NUM_CREATURES = 3; + + public static void main(String[] args) { + var app = new App(); + app.run(); + } + + @Override + public void run() { + List creatures = new ArrayList<>(); + try { + for (int i = 0; i < NUM_CREATURES; i++) { + creatures.add(new Orc(Orc.class.getSimpleName() + i)); + creatures.get(i).eat(); + creatures.get(i).roam(); + } + Thread.sleep(1000); + } catch (InterruptedException e) { + logger.error(e.getMessage()); + Thread.currentThread().interrupt(); + } finally { + for (int i = 0; i < NUM_CREATURES; i++) { + creatures.get(i).kill(0); + } + } + } +} +``` + +خروجی برنامه: + +``` +09:00:02.501 [Thread-0] INFO com.iluwatar.activeobject.ActiveCreature -- Orc0 is eating! +09:00:02.501 [Thread-2] INFO com.iluwatar.activeobject.ActiveCreature -- Orc2 is eating! +09:00:02.501 [Thread-1] INFO com.iluwatar.activeobject.ActiveCreature -- Orc1 is eating! +09:00:02.504 [Thread-0] INFO com.iluwatar.activeobject.ActiveCreature -- Orc0 has finished eating! +09:00:02.504 [Thread-1] INFO com.iluwatar.activeobject.ActiveCreature -- Orc1 has finished eating! +09:00:02.504 [Thread-0] INFO com.iluwatar.activeobject.ActiveCreature -- Orc0 has started to roam in the wastelands. +09:00:02.504 [Thread-2] INFO com.iluwatar.activeobject.ActiveCreature -- Orc2 has finished eating! +09:00:02.504 [Thread-1] INFO com.iluwatar.activeobject.ActiveCreature -- Orc1 has started to roam in the wastelands. +09:00:02.504 [Thread-2] INFO com.iluwatar.activeobject.ActiveCreature -- Orc2 has started to roam in the wastelands. +``` + +چه زمانی از الگوی Active Object در جاوا استفاده کنیم؟ + +از الگوی Active Object در جاوا استفاده کنید زمانی که: + + نیاز دارید وظایف ناهمگام را بدون مسدود کردن thread اصلی مدیریت کنید تا عملکرد و پاسخ‌گویی بهتری داشته باشید. + + نیاز به تعامل ناهمگام با منابع خارجی دارید. + + می‌خواهید پاسخ‌گویی برنامه را افزایش دهید. + + نیاز به مدیریت وظایف هم‌زمان به‌صورت ماژولار و قابل نگهداری دارید. + +آموزش‌های Java برای الگوی Active Object + + [Android and Java Concurrency: The Active Object Pattern (Douglas Schmidt)]((https://www.youtube.com/watch?v=Cd8t2u5Qmvc)) + +کاربردهای دنیای واقعی الگوی Active Object در جاوا + + سیستم‌های معاملات بلادرنگ که درخواست‌ها به‌صورت ناهمگام پردازش می‌شوند. + + رابط‌های کاربری گرافیکی (GUI) که در آن وظایف طولانی در پس‌زمینه اجرا می‌شوند بدون آنکه رابط کاربری را متوقف کنند. + + برنامه‌نویسی بازی‌ها برای مدیریت به‌روزرسانی‌های هم‌زمان وضعیت بازی یا محاسبات هوش مصنوعی. + +مزایا و ملاحظات الگوی Active Object + +با مزایا و معایب استفاده از الگوی Active Object در جاوا آشنا شوید؛ از جمله بهبود ایمنی threadها و ملاحظات سربار احتمالی (overhead). + +مزایا: + + پاسخ‌گویی بهتر thread اصلی. + + محصورسازی مسائل مربوط به هم‌زمانی درون شیءها. + + بهبود سازمان‌دهی کد و قابلیت نگهداری. + + فراهم‌سازی ایمنی در برابر شرایط بحرانی (thread safety) و جلوگیری از مشکلات وضعیت مشترک. + +معایب: + + سربار اضافی به دلیل ارسال پیام و مدیریت threadها. + + برای تمام سناریوهای هم‌زمانی مناسب نیست. + +الگوهای طراحی مرتبط در جاوا + + * [Command](https://java-design-patterns.com/patterns/command/): درخواست را به‌عنوان یک شیء کپسوله می‌کند، مشابه روشی که Active Object فراخوانی متد را کپسوله می‌کند. + + * [Promise](https://java-design-patterns.com/patterns/promise/): راهی برای دریافت نتیجه یک فراخوانی متد ناهمگام فراهم می‌کند؛ اغلب همراه با Active Object استفاده می‌شود. + + * [Proxy](https://java-design-patterns.com/patterns/proxy/): الگوی Active Object می‌تواند از proxy برای مدیریت فراخوانی‌های متد به‌صورت ناهمگام استفاده کند. + +منابع و مراجع + + * [Design Patterns: Elements of Reusable Object Software](https://amzn.to/3HYqrBE) + + * [Concurrent Programming in Java: Design Principles and Patterns](https://amzn.to/498SRVq) + + * [Java Concurrency in Practice](https://amzn.to/4aRMruW) + + * [Learning Concurrent Programming in Scala](https://amzn.to/3UE07nV) + + * [Pattern Languages of Program Design 3](https://amzn.to/3OI1j61) + + * [Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects](https://amzn.to/3UgC24V) + diff --git a/localization/fa/active-object/etc/active-object-sequence-diagram.png b/localization/fa/active-object/etc/active-object-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b725d9b07b6d14936f2453c4febe630b92526d10 GIT binary patch literal 83490 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�TxYE36Yk<#Jh(y%^~6xa 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%0ATK8Me7XO|L7n+5a_@btd{)e()=Fo|26^A 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 literal 0 HcmV?d00001 diff --git a/localization/fa/active-object/etc/active-object.urm.puml b/localization/fa/active-object/etc/active-object.urm.puml new file mode 100644 index 000000000000..3fc3c8e1e921 --- /dev/null +++ b/localization/fa/active-object/etc/active-object.urm.puml @@ -0,0 +1,25 @@ +@startuml +package com.iluwatar.activeobject { + abstract class ActiveCreature { + - logger : Logger + - name : String + - requests : BlockingQueue + - thread : Thread + + ActiveCreature(name : String) + + eat() + + name() : String + + roam() + } + class App { + - creatures : Integer + - logger : Logger + + App() + + main(args : String[]) {static} + + run() + } + class Orc { + + Orc(name : String) + } +} +Orc --|> ActiveCreature +@enduml \ No newline at end of file From 03190896e0aa7ca7064dc382f62e5b5dfbf132e4 Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Mon, 21 Apr 2025 06:41:20 +0330 Subject: [PATCH 12/32] active-object: improve when to use --- localization/fa/active-object/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/localization/fa/active-object/README.md b/localization/fa/active-object/README.md index ab9808d77a2f..53f51c24e021 100644 --- a/localization/fa/active-object/README.md +++ b/localization/fa/active-object/README.md @@ -173,13 +173,13 @@ public class App implements Runnable { از الگوی Active Object در جاوا استفاده کنید زمانی که: - نیاز دارید وظایف ناهمگام را بدون مسدود کردن thread اصلی مدیریت کنید تا عملکرد و پاسخ‌گویی بهتری داشته باشید. +* نیاز دارید وظایف ناهمگام را بدون مسدود کردن thread اصلی مدیریت کنید تا عملکرد و پاسخ‌گویی بهتری داشته باشید. - نیاز به تعامل ناهمگام با منابع خارجی دارید. +* نیاز به تعامل ناهمگام با منابع خارجی دارید. - می‌خواهید پاسخ‌گویی برنامه را افزایش دهید. +* می‌خواهید پاسخ‌گویی برنامه را افزایش دهید. - نیاز به مدیریت وظایف هم‌زمان به‌صورت ماژولار و قابل نگهداری دارید. +* نیاز به مدیریت وظایف هم‌زمان به‌صورت ماژولار و قابل نگهداری دارید. آموزش‌های Java برای الگوی Active Object From 27729184871c80afefa698e7e5924dffa5fab30d Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Mon, 21 Apr 2025 06:42:16 +0330 Subject: [PATCH 13/32] active-object: improve when to use --- localization/fa/active-object/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/localization/fa/active-object/README.md b/localization/fa/active-object/README.md index 53f51c24e021..197d22d37e54 100644 --- a/localization/fa/active-object/README.md +++ b/localization/fa/active-object/README.md @@ -173,13 +173,13 @@ public class App implements Runnable { از الگوی Active Object در جاوا استفاده کنید زمانی که: -* نیاز دارید وظایف ناهمگام را بدون مسدود کردن thread اصلی مدیریت کنید تا عملکرد و پاسخ‌گویی بهتری داشته باشید. +نیاز دارید وظایف ناهمگام را بدون مسدود کردن thread اصلی مدیریت کنید تا عملکرد و پاسخ‌گویی بهتری داشته باشید. -* نیاز به تعامل ناهمگام با منابع خارجی دارید. +نیاز به تعامل ناهمگام با منابع خارجی دارید. -* می‌خواهید پاسخ‌گویی برنامه را افزایش دهید. +می‌خواهید پاسخ‌گویی برنامه را افزایش دهید. -* نیاز به مدیریت وظایف هم‌زمان به‌صورت ماژولار و قابل نگهداری دارید. +نیاز به مدیریت وظایف هم‌زمان به‌صورت ماژولار و قابل نگهداری دارید. آموزش‌های Java برای الگوی Active Object From c8f40230e0b6d3b7a7e35579522a3a209344eb2e Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Mon, 21 Apr 2025 06:53:52 +0330 Subject: [PATCH 14/32] active-object: improve bullets (test) --- localization/fa/active-object/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/localization/fa/active-object/README.md b/localization/fa/active-object/README.md index 197d22d37e54..fe21c23f0933 100644 --- a/localization/fa/active-object/README.md +++ b/localization/fa/active-object/README.md @@ -118,7 +118,7 @@ public class Orc extends ActiveCreature { super(name); } } - +``` اکنون می‌توان چند موجود مانند orc ایجاد کرد، به آن‌ها دستور داد که بخورند و پرسه بزنند، و آن‌ها این دستورات را در thread مختص به خود اجرا می‌کنند: ```java @@ -199,13 +199,13 @@ public class App implements Runnable { مزایا: - پاسخ‌گویی بهتر thread اصلی. +* > پاسخ‌گویی بهتر thread اصلی. - محصورسازی مسائل مربوط به هم‌زمانی درون شیءها. +* > محصورسازی مسائل مربوط به هم‌زمانی درون شیءها. - بهبود سازمان‌دهی کد و قابلیت نگهداری. +* > بهبود سازمان‌دهی کد و قابلیت نگهداری. - فراهم‌سازی ایمنی در برابر شرایط بحرانی (thread safety) و جلوگیری از مشکلات وضعیت مشترک. +* > فراهم‌سازی ایمنی در برابر شرایط بحرانی (thread safety) و جلوگیری از مشکلات وضعیت مشترک. معایب: From 5725830b6f261b1a1118c3c43c378b02ab498bd0 Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Mon, 21 Apr 2025 06:55:22 +0330 Subject: [PATCH 15/32] active-object: improve bullets (test) --- localization/fa/active-object/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/localization/fa/active-object/README.md b/localization/fa/active-object/README.md index fe21c23f0933..ba1b8089b2d0 100644 --- a/localization/fa/active-object/README.md +++ b/localization/fa/active-object/README.md @@ -197,8 +197,8 @@ public class App implements Runnable { با مزایا و معایب استفاده از الگوی Active Object در جاوا آشنا شوید؛ از جمله بهبود ایمنی threadها و ملاحظات سربار احتمالی (overhead). -مزایا: - +> مزایا: +> * > پاسخ‌گویی بهتر thread اصلی. * > محصورسازی مسائل مربوط به هم‌زمانی درون شیءها. From b14e48bf7b6a3ece8159c4d9e57989a06f7276a3 Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Mon, 21 Apr 2025 06:56:30 +0330 Subject: [PATCH 16/32] active-object: improve bullets (test) --- localization/fa/active-object/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/localization/fa/active-object/README.md b/localization/fa/active-object/README.md index ba1b8089b2d0..74d19a799120 100644 --- a/localization/fa/active-object/README.md +++ b/localization/fa/active-object/README.md @@ -199,6 +199,7 @@ public class App implements Runnable { > مزایا: > +> * پاسخ‌گویی بهتر thread اصلی. * > پاسخ‌گویی بهتر thread اصلی. * > محصورسازی مسائل مربوط به هم‌زمانی درون شیءها. From 99218614ba3b25baa244b77ac2d5d44b90f164e0 Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Mon, 21 Apr 2025 06:58:25 +0330 Subject: [PATCH 17/32] active-object: improve bullets (test) --- localization/fa/active-object/README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/localization/fa/active-object/README.md b/localization/fa/active-object/README.md index 74d19a799120..fa98a3eb5820 100644 --- a/localization/fa/active-object/README.md +++ b/localization/fa/active-object/README.md @@ -200,13 +200,9 @@ public class App implements Runnable { > مزایا: > > * پاسخ‌گویی بهتر thread اصلی. -* > پاسخ‌گویی بهتر thread اصلی. - -* > محصورسازی مسائل مربوط به هم‌زمانی درون شیءها. - -* > بهبود سازمان‌دهی کد و قابلیت نگهداری. - -* > فراهم‌سازی ایمنی در برابر شرایط بحرانی (thread safety) و جلوگیری از مشکلات وضعیت مشترک. +> * محصورسازی مسائل مربوط به هم‌زمانی درون شیءها. +> * بهبود سازمان‌دهی کد و قابلیت نگهداری. +> * فراهم‌سازی ایمنی در برابر شرایط بحرانی (thread safety) و جلوگیری از مشکلات وضعیت مشترک. معایب: From 937a17e4c03c5a43d921149fc9467f87edbe18df Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Mon, 21 Apr 2025 07:17:17 +0330 Subject: [PATCH 18/32] active-object: improve bullets --- localization/fa/active-object/README.md | 27 ++++++++++++------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/localization/fa/active-object/README.md b/localization/fa/active-object/README.md index fa98a3eb5820..f4fcb4b0859e 100644 --- a/localization/fa/active-object/README.md +++ b/localization/fa/active-object/README.md @@ -204,31 +204,30 @@ public class App implements Runnable { > * بهبود سازمان‌دهی کد و قابلیت نگهداری. > * فراهم‌سازی ایمنی در برابر شرایط بحرانی (thread safety) و جلوگیری از مشکلات وضعیت مشترک. -معایب: - - سربار اضافی به دلیل ارسال پیام و مدیریت threadها. - - برای تمام سناریوهای هم‌زمانی مناسب نیست. +> معایب: +> +> * سربار اضافی به دلیل ارسال پیام و مدیریت threadها. +> * برای تمام سناریوهای هم‌زمانی مناسب نیست. الگوهای طراحی مرتبط در جاوا - * [Command](https://java-design-patterns.com/patterns/command/): درخواست را به‌عنوان یک شیء کپسوله می‌کند، مشابه روشی که Active Object فراخوانی متد را کپسوله می‌کند. +> * [Command](https://java-design-patterns.com/patterns/command/): درخواست را به‌عنوان یک شیء کپسوله می‌کند، مشابه روشی که Active Object فراخوانی متد را کپسوله می‌کند. - * [Promise](https://java-design-patterns.com/patterns/promise/): راهی برای دریافت نتیجه یک فراخوانی متد ناهمگام فراهم می‌کند؛ اغلب همراه با Active Object استفاده می‌شود. +> * [Promise](https://java-design-patterns.com/patterns/promise/): راهی برای دریافت نتیجه یک فراخوانی متد ناهمگام فراهم می‌کند؛ اغلب همراه با Active Object استفاده می‌شود. - * [Proxy](https://java-design-patterns.com/patterns/proxy/): الگوی Active Object می‌تواند از proxy برای مدیریت فراخوانی‌های متد به‌صورت ناهمگام استفاده کند. +> * [Proxy](https://java-design-patterns.com/patterns/proxy/): الگوی Active Object می‌تواند از proxy برای مدیریت فراخوانی‌های متد به‌صورت ناهمگام استفاده کند. منابع و مراجع - * [Design Patterns: Elements of Reusable Object Software](https://amzn.to/3HYqrBE) +> * [Design Patterns: Elements of Reusable Object Software](https://amzn.to/3HYqrBE) - * [Concurrent Programming in Java: Design Principles and Patterns](https://amzn.to/498SRVq) +> * [Concurrent Programming in Java: Design Principles and Patterns](https://amzn.to/498SRVq) - * [Java Concurrency in Practice](https://amzn.to/4aRMruW) +> * [Java Concurrency in Practice](https://amzn.to/4aRMruW) - * [Learning Concurrent Programming in Scala](https://amzn.to/3UE07nV) +> * [Learning Concurrent Programming in Scala](https://amzn.to/3UE07nV) - * [Pattern Languages of Program Design 3](https://amzn.to/3OI1j61) +> * [Pattern Languages of Program Design 3](https://amzn.to/3OI1j61) - * [Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects](https://amzn.to/3UgC24V) +> * [Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects](https://amzn.to/3UgC24V) From f3e283dbca1331fd5cc915fac0b9ec86a298e1f6 Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Mon, 21 Apr 2025 07:25:02 +0330 Subject: [PATCH 19/32] active-object: Fix all bullets --- localization/fa/active-object/README.md | 31 +++++++------------------ 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/localization/fa/active-object/README.md b/localization/fa/active-object/README.md index f4fcb4b0859e..7c105b072aaa 100644 --- a/localization/fa/active-object/README.md +++ b/localization/fa/active-object/README.md @@ -172,26 +172,20 @@ public class App implements Runnable { چه زمانی از الگوی Active Object در جاوا استفاده کنیم؟ از الگوی Active Object در جاوا استفاده کنید زمانی که: - -نیاز دارید وظایف ناهمگام را بدون مسدود کردن thread اصلی مدیریت کنید تا عملکرد و پاسخ‌گویی بهتری داشته باشید. - -نیاز به تعامل ناهمگام با منابع خارجی دارید. - -می‌خواهید پاسخ‌گویی برنامه را افزایش دهید. - -نیاز به مدیریت وظایف هم‌زمان به‌صورت ماژولار و قابل نگهداری دارید. +> * نیاز دارید وظایف ناهمگام را بدون مسدود کردن thread اصلی مدیریت کنید تا عملکرد و پاسخ‌گویی بهتری داشته باشید. +> * نیاز به تعامل ناهمگام با منابع خارجی دارید. +> * می‌خواهید پاسخ‌گویی برنامه را افزایش دهید. +> * نیاز به مدیریت وظایف هم‌زمان به‌صورت ماژولار و قابل نگهداری دارید. آموزش‌های Java برای الگوی Active Object - - [Android and Java Concurrency: The Active Object Pattern (Douglas Schmidt)]((https://www.youtube.com/watch?v=Cd8t2u5Qmvc)) +> [Android and Java Concurrency: The Active Object Pattern (Douglas Schmidt)]((https://www.youtube.com/watch?v=Cd8t2u5Qmvc)) کاربردهای دنیای واقعی الگوی Active Object در جاوا - سیستم‌های معاملات بلادرنگ که درخواست‌ها به‌صورت ناهمگام پردازش می‌شوند. - - رابط‌های کاربری گرافیکی (GUI) که در آن وظایف طولانی در پس‌زمینه اجرا می‌شوند بدون آنکه رابط کاربری را متوقف کنند. - - برنامه‌نویسی بازی‌ها برای مدیریت به‌روزرسانی‌های هم‌زمان وضعیت بازی یا محاسبات هوش مصنوعی. +> سیستم‌های معاملات بلادرنگ که درخواست‌ها به‌صورت ناهمگام پردازش می‌شوند. +> که در آن وظایف طولانی در پس‌زمینه اجرا می‌شوند بدون آنکه رابط کاربری را متوقف کنند. +> رابط‌های کاربری گرافیکی (GUI) +> برنامه‌نویسی بازی‌ها برای مدیریت به‌روزرسانی‌های هم‌زمان وضعیت بازی یا محاسبات هوش مصنوعی. مزایا و ملاحظات الگوی Active Object @@ -212,22 +206,15 @@ public class App implements Runnable { الگوهای طراحی مرتبط در جاوا > * [Command](https://java-design-patterns.com/patterns/command/): درخواست را به‌عنوان یک شیء کپسوله می‌کند، مشابه روشی که Active Object فراخوانی متد را کپسوله می‌کند. - > * [Promise](https://java-design-patterns.com/patterns/promise/): راهی برای دریافت نتیجه یک فراخوانی متد ناهمگام فراهم می‌کند؛ اغلب همراه با Active Object استفاده می‌شود. - > * [Proxy](https://java-design-patterns.com/patterns/proxy/): الگوی Active Object می‌تواند از proxy برای مدیریت فراخوانی‌های متد به‌صورت ناهمگام استفاده کند. منابع و مراجع > * [Design Patterns: Elements of Reusable Object Software](https://amzn.to/3HYqrBE) - > * [Concurrent Programming in Java: Design Principles and Patterns](https://amzn.to/498SRVq) - > * [Java Concurrency in Practice](https://amzn.to/4aRMruW) - > * [Learning Concurrent Programming in Scala](https://amzn.to/3UE07nV) - > * [Pattern Languages of Program Design 3](https://amzn.to/3OI1j61) - > * [Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects](https://amzn.to/3UgC24V) From 47228e3ff861ce6ce3e0ac1a6d1857713c7fdff2 Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Mon, 21 Apr 2025 22:19:34 +0330 Subject: [PATCH 20/32] -fixed problems in bullet alignments --- localization/fa/factory/README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index 8e1d5a87c6af..26f92f5b60a2 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -119,21 +119,21 @@ public static void main(String[] args) { ## کاربردهای دنیای واقعی الگوی factory در جاوا -* [java.util.Calendar#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#getInstance--) -* [java.util.ResourceBundle#getBundle()](https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-) -* [java.text.NumberFormat#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getInstance--) -* [java.nio.charset.Charset#forName()](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html#forName-java.lang.String-) -* [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) (اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند) -* [java.util.EnumSet#of()](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html#of(E)) -* [javax.xml.bind.JAXBContext#createMarshaller()](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXBContext.html#createMarshaller--) و متدهای مشابه دیگر. -* JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. +> * [java.util.Calendar#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#getInstance--) +> * [java.util.ResourceBundle#getBundle()](https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-) +> * [java.text.NumberFormat#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getInstance--) +> * [java.nio.charset.Charset#forName()](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html#forName-java.lang.String-) +> * [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) (اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند) +> * [java.util.EnumSet#of()](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html#of(E)) +> * [javax.xml.bind.JAXBContext#createMarshaller()](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXBContext.html#createMarshaller--) و متدهای مشابه دیگر. +> * JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. ## مزایا و معایب الگوی factory ### مزایا: -* پیاده‌سازی الگوی factory در برنامه جاوای شما، وابستگی بین پیاده‌سازی و کلاس‌هایی که استفاده می‌کند را کاهش می‌دهد. -* از [اصل Open/Closed](https://java-design-patterns.com/principles/#open-closed-principle) پشتیبانی می‌کند، زیرا سیستم می‌تواند انواع جدیدی را بدون تغییر کد موجود معرفی کند. +> * پیاده‌سازی الگوی factory در برنامه جاوای شما، وابستگی بین پیاده‌سازی و کلاس‌هایی که استفاده می‌کند را کاهش می‌دهد. +> * از [اصل Open/Closed](https://java-design-patterns.com/principles/#open-closed-principle) پشتیبانی می‌کند، زیرا سیستم می‌تواند انواع جدیدی را بدون تغییر کد موجود معرفی کند. ### معایب: @@ -142,10 +142,10 @@ public static void main(String[] args) { ## الگوهای طراحی مرتبط با جاوا -* [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. -* [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. -* [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. -* [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. +> * [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. +> * [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. +> * [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. +> * [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. ## منابع و اعتبارات From 304412ee17d621a7ff6efce4116088921f567e37 Mon Sep 17 00:00:00 2001 From: Keivan Shirkoubian Date: Mon, 21 Apr 2025 22:52:56 +0330 Subject: [PATCH 21/32] Update README.md -fixed alignment in bullets --- localization/fa/factory/README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index 26f92f5b60a2..90d0c1a2cca8 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -123,10 +123,11 @@ public static void main(String[] args) { > * [java.util.ResourceBundle#getBundle()](https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-) > * [java.text.NumberFormat#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getInstance--) > * [java.nio.charset.Charset#forName()](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html#forName-java.lang.String-) -> * [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) (اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند) +> * این مورد [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند > * [java.util.EnumSet#of()](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html#of(E)) > * [javax.xml.bind.JAXBContext#createMarshaller()](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXBContext.html#createMarshaller--) و متدهای مشابه دیگر. -> * JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. +> +> * کتابخانه‌ی JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. ## مزایا و معایب الگوی factory @@ -137,18 +138,18 @@ public static void main(String[] args) { ### معایب: -* کد می‌تواند به دلیل معرفی چندین کلاس اضافی پیچیده‌تر شود. -* استفاده بیش از حد می‌تواند کد را کمتر خوانا کند اگر پیچیدگی ایجاد اشیاء کم یا غیرضروری باشد. +> * کد می‌تواند به دلیل معرفی چندین کلاس اضافی پیچیده‌تر شود. +> * استفاده بیش از حد می‌تواند کد را کمتر خوانا کند اگر پیچیدگی ایجاد اشیاء کم یا غیرضروری باشد. ## الگوهای طراحی مرتبط با جاوا -> * [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. -> * [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. -> * [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. -> * [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. +> * الگوی [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. +> * الگوی [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. +> * الگوی [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. +> * الگوی [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. ## منابع و اعتبارات * [Design Patterns: Elements of Reusable Object-Oriented Software](https://amzn.to/3w0Rk5y) * [Effective Java](https://amzn.to/4cGk2Jz) -* [Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software](https://amzn.to/3UpTLrG) \ No newline at end of file +* [Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software](https://amzn.to/3UpTLrG) From 0920b4ce23196f19779f5f88aac7531609b2ff17 Mon Sep 17 00:00:00 2001 From: Keivan Shirkoubian Date: Mon, 21 Apr 2025 22:59:14 +0330 Subject: [PATCH 22/32] Update README.md -changed tags to English --- localization/fa/factory/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index 90d0c1a2cca8..db41813464e3 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -5,11 +5,11 @@ description: "الگوی طراحی factory در جاوا را با مثال‌ category: structural language: fa tag: - - انتزاع - - کپسوله‌سازی - - گروه چهار نفره - - نمونه‌سازی - - چندریختی + - Abstraction + - Encapsulation + - Gang of Four + - Instantiation + - Polymorphism --- ## هدف از الگوی طراحی factory From 61356daeca480db96b7980cf7eb72ef2465a343d Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Sun, 20 Apr 2025 19:09:53 +0330 Subject: [PATCH 23/32] -added persian translation of factory pattern --- localization/fa/factory/README.rtl.md | 155 ++++++++++++++++++ .../factory/etc/factory-sequence-diagram.png | Bin 0 -> 29457 bytes 2 files changed, 155 insertions(+) create mode 100644 localization/fa/factory/README.rtl.md create mode 100644 localization/fa/factory/etc/factory-sequence-diagram.png diff --git a/localization/fa/factory/README.rtl.md b/localization/fa/factory/README.rtl.md new file mode 100644 index 000000000000..84e05328a7a3 --- /dev/null +++ b/localization/fa/factory/README.rtl.md @@ -0,0 +1,155 @@ +--- +--- +title: "الگوی factory در جاوا: ساده‌سازی ایجاد اشیاء" +shortTitle: factory +description: "الگوی طراحی factory در جاوا را با مثال‌ها و توضیحات دقیق بیاموزید. یاد بگیرید چگونه با استفاده از الگوی factory کدی انعطاف‌پذیر و مقیاس‌پذیر ایجاد کنید. مناسب برای توسعه‌دهندگانی که به دنبال بهبود مهارت‌های طراحی شیءگرا هستند." +category: structural +language: fa +tag: + - انتزاع + - کپسوله‌سازی + - گروه چهار نفره + - نمونه‌سازی + - چندریختی +--- + +## هدف از الگوی طراحی factory + +الگوی طراحی factory در جاوا یک الگوی ساختاری است که یک رابط برای ایجاد یک شیء تعریف می‌کند اما به زیرکلاس‌ها اجازه می‌دهد نوع اشیائی را که ایجاد خواهند شد تغییر دهند. این الگو انعطاف‌پذیری و مقیاس‌پذیری را در کد شما ترویج می‌دهد. + +## توضیح دقیق الگوی factory با مثال‌های دنیای واقعی + +### مثال دنیای واقعی + +> تصور کنید در یک نانوایی انواع مختلف کیک‌ها با استفاده از الگوی طراحی factory ساخته می‌شوند. `CakeFactory` فرآیند ایجاد را مدیریت می‌کند و امکان افزودن آسان انواع جدید کیک‌ها را بدون تغییر در فرآیند اصلی فراهم می‌کند. `CakeFactory` می‌تواند انواع مختلفی از کیک‌ها مانند کیک شکلاتی، کیک وانیلی و کیک توت‌فرنگی تولید کند. به جای اینکه کارکنان نانوایی به صورت دستی مواد اولیه را انتخاب کنند و دستورالعمل‌های خاصی را برای هر نوع کیک دنبال کنند، از `CakeFactory` برای مدیریت فرآیند استفاده می‌کنند. مشتری فقط نوع کیک را درخواست می‌کند و `CakeFactory` مواد اولیه و دستورالعمل مناسب را تعیین کرده و نوع خاصی از کیک را ایجاد می‌کند. این تنظیم به نانوایی اجازه می‌دهد تا انواع جدید کیک‌ها را به راحتی اضافه کند بدون اینکه فرآیند اصلی تغییر کند، که این امر انعطاف‌پذیری و مقیاس‌پذیری را ترویج می‌دهد. + +### تعریف ویکی‌پدیا + +> factory یک شیء برای ایجاد اشیاء دیگر است – به طور رسمی، factory یک تابع یا متدی است که اشیاء با نمونه‌ها یا کلاس‌های مختلف را بازمی‌گرداند. + +### نمودار توالی + +![نمودار توالی factory](./etc/factory-sequence-diagram.png) + +## مثال برنامه‌نویسی از الگوی factory در جاوا + +تصور کنید یک کیمیاگر قصد دارد سکه‌هایی تولید کند. کیمیاگر باید بتواند هم سکه‌های طلا و هم سکه‌های مسی ایجاد کند و تغییر بین آن‌ها باید بدون تغییر در کد موجود امکان‌پذیر باشد. الگوی factory این امکان را فراهم می‌کند با ارائه یک متد ایجاد استاتیک که می‌توان آن را با پارامترهای مرتبط فراخوانی کرد. + +در جاوا، می‌توانید الگوی factory را با تعریف یک رابط `Coin` و پیاده‌سازی‌های آن `GoldCoin` و `CopperCoin` پیاده‌سازی کنید. کلاس `CoinFactory` یک متد استاتیک `getCoin` ارائه می‌دهد تا اشیاء سکه را بر اساس نوع ایجاد کند. + +```java +public interface Coin { + String getDescription(); +} +``` + +```java +public class GoldCoin implements Coin { + + static final String DESCRIPTION = "This is a gold coin."; + + @Override + public String getDescription() { + return DESCRIPTION; + } +} +``` + +```java +public class CopperCoin implements Coin { + + static final String DESCRIPTION = "This is a copper coin."; + + @Override + public String getDescription() { + return DESCRIPTION; + } +} +``` + +کد زیر انواع سکه‌هایی که پشتیبانی می‌شوند (`GoldCoin` و `CopperCoin`) را نشان می‌دهد. + +```java +@RequiredArgsConstructor +@Getter +public enum CoinType { + + COPPER(CopperCoin::new), + GOLD(GoldCoin::new); + + private final Supplier constructor; +} +``` + +سپس متد استاتیک `getCoin` برای ایجاد اشیاء سکه در کلاس factory `CoinFactory` کپسوله شده است. + +```java +public class CoinFactory { + + public static Coin getCoin(CoinType type) { + return type.getConstructor().get(); + } +} +``` + +اکنون، در کد کلاینت، می‌توانیم انواع مختلفی از سکه‌ها را با استفاده از کلاس factory تولید کنیم. + +```java +public static void main(String[] args) { + LOGGER.info("The alchemist begins his work."); + var coin1 = CoinFactory.getCoin(CoinType.COPPER); + var coin2 = CoinFactory.getCoin(CoinType.GOLD); + LOGGER.info(coin1.getDescription()); + LOGGER.info(coin2.getDescription()); +} +``` + +خروجی برنامه: + +``` +06:19:53.530 [main] INFO com.iluwatar.factory.App -- The alchemist begins his work. +06:19:53.533 [main] INFO com.iluwatar.factory.App -- This is a copper coin. +06:19:53.533 [main] INFO com.iluwatar.factory.App -- This is a gold coin. +``` + +## زمان استفاده از الگوی factory در جاوا + +* از الگوی طراحی factory در جاوا زمانی استفاده کنید که کلاس از قبل نوع دقیق و وابستگی‌های اشیائی که نیاز به ایجاد آن دارد را نمی‌داند. +* زمانی که یک متد یکی از چندین کلاس ممکن که یک کلاس والد مشترک دارند را بازمی‌گرداند و می‌خواهد منطق انتخاب شیء را کپسوله کند. +* این الگو معمولاً هنگام طراحی فریم‌ورک‌ها یا کتابخانه‌ها برای ارائه بهترین انعطاف‌پذیری و جداسازی از انواع کلاس‌های خاص استفاده می‌شود. + +## کاربردهای دنیای واقعی الگوی factory در جاوا + +* [java.util.Calendar#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#getInstance--) +* [java.util.ResourceBundle#getBundle()](https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-) +* [java.text.NumberFormat#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getInstance--) +* [java.nio.charset.Charset#forName()](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html#forName-java.lang.String-) +* [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) (اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند) +* [java.util.EnumSet#of()](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html#of(E)) +* [javax.xml.bind.JAXBContext#createMarshaller()](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXBContext.html#createMarshaller--) و متدهای مشابه دیگر. +* JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. + +## مزایا و معایب الگوی factory + +### مزایا: + +* پیاده‌سازی الگوی factory در برنامه جاوای شما، وابستگی بین پیاده‌سازی و کلاس‌هایی که استفاده می‌کند را کاهش می‌دهد. +* از [اصل Open/Closed](https://java-design-patterns.com/principles/#open-closed-principle) پشتیبانی می‌کند، زیرا سیستم می‌تواند انواع جدیدی را بدون تغییر کد موجود معرفی کند. + +### معایب: + +* کد می‌تواند به دلیل معرفی چندین کلاس اضافی پیچیده‌تر شود. +* استفاده بیش از حد می‌تواند کد را کمتر خوانا کند اگر پیچیدگی ایجاد اشیاء کم یا غیرضروری باشد. + +## الگوهای طراحی مرتبط با جاوا + +* [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. +* [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. +* [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. +* [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. + +## منابع و اعتبارات + +* [Design Patterns: Elements of Reusable Object-Oriented Software](https://amzn.to/3w0Rk5y) +* [Effective Java](https://amzn.to/4cGk2Jz) +* [Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software](https://amzn.to/3UpTLrG) \ No newline at end of file diff --git a/localization/fa/factory/etc/factory-sequence-diagram.png b/localization/fa/factory/etc/factory-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..260bea92f24736656584c4714398e47e2dbb61c2 GIT binary patch literal 29457 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

a2pE@iOs1kiD%Yk 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�=nt6c0Wf(41WEl3CS?Fjz#jnoc5nbbUbAIJDWn@L{tc!TV#TiY z-jc$6dR|Wz90hHqI3IG5A literal 0 HcmV?d00001 From 862ab956ef2722f61d46fd4bc2698010e564f626 Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Sun, 20 Apr 2025 19:55:18 +0330 Subject: [PATCH 24/32] -renamed file --- localization/fa/factory/{README.rtl.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename localization/fa/factory/{README.rtl.md => README.md} (100%) diff --git a/localization/fa/factory/README.rtl.md b/localization/fa/factory/README.md similarity index 100% rename from localization/fa/factory/README.rtl.md rename to localization/fa/factory/README.md From 8d4512adb34320511088f1ffb9d513da1ab81c3c Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Sun, 20 Apr 2025 20:36:14 +0330 Subject: [PATCH 25/32] -changed wikipedia definition --- localization/fa/factory/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index 84e05328a7a3..fcd46187efa2 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -25,7 +25,7 @@ tag: ### تعریف ویکی‌پدیا -> factory یک شیء برای ایجاد اشیاء دیگر است – به طور رسمی، factory یک تابع یا متدی است که اشیاء با نمونه‌ها یا کلاس‌های مختلف را بازمی‌گرداند. +> الگوی factory یک شیء برای ایجاد اشیاء دیگر است – به طور رسمی، factory یک تابع یا متدی است که اشیاء با نمونه‌ها یا کلاس‌های مختلف را بازمی‌گرداند. ### نمودار توالی From 17661e621244d79cfdb94397ac6a8f7958993a06 Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Sun, 20 Apr 2025 20:37:08 +0330 Subject: [PATCH 26/32] -fixed table problem --- localization/fa/factory/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index fcd46187efa2..8e1d5a87c6af 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -1,5 +1,4 @@ --- ---- title: "الگوی factory در جاوا: ساده‌سازی ایجاد اشیاء" shortTitle: factory description: "الگوی طراحی factory در جاوا را با مثال‌ها و توضیحات دقیق بیاموزید. یاد بگیرید چگونه با استفاده از الگوی factory کدی انعطاف‌پذیر و مقیاس‌پذیر ایجاد کنید. مناسب برای توسعه‌دهندگانی که به دنبال بهبود مهارت‌های طراحی شیءگرا هستند." From 575cceeae9fa115e89efb4f27c48fc8d60bd3519 Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Mon, 21 Apr 2025 22:19:34 +0330 Subject: [PATCH 27/32] -fixed problems in bullet alignments --- localization/fa/factory/README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index 8e1d5a87c6af..26f92f5b60a2 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -119,21 +119,21 @@ public static void main(String[] args) { ## کاربردهای دنیای واقعی الگوی factory در جاوا -* [java.util.Calendar#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#getInstance--) -* [java.util.ResourceBundle#getBundle()](https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-) -* [java.text.NumberFormat#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getInstance--) -* [java.nio.charset.Charset#forName()](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html#forName-java.lang.String-) -* [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) (اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند) -* [java.util.EnumSet#of()](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html#of(E)) -* [javax.xml.bind.JAXBContext#createMarshaller()](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXBContext.html#createMarshaller--) و متدهای مشابه دیگر. -* JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. +> * [java.util.Calendar#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#getInstance--) +> * [java.util.ResourceBundle#getBundle()](https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-) +> * [java.text.NumberFormat#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getInstance--) +> * [java.nio.charset.Charset#forName()](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html#forName-java.lang.String-) +> * [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) (اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند) +> * [java.util.EnumSet#of()](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html#of(E)) +> * [javax.xml.bind.JAXBContext#createMarshaller()](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXBContext.html#createMarshaller--) و متدهای مشابه دیگر. +> * JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. ## مزایا و معایب الگوی factory ### مزایا: -* پیاده‌سازی الگوی factory در برنامه جاوای شما، وابستگی بین پیاده‌سازی و کلاس‌هایی که استفاده می‌کند را کاهش می‌دهد. -* از [اصل Open/Closed](https://java-design-patterns.com/principles/#open-closed-principle) پشتیبانی می‌کند، زیرا سیستم می‌تواند انواع جدیدی را بدون تغییر کد موجود معرفی کند. +> * پیاده‌سازی الگوی factory در برنامه جاوای شما، وابستگی بین پیاده‌سازی و کلاس‌هایی که استفاده می‌کند را کاهش می‌دهد. +> * از [اصل Open/Closed](https://java-design-patterns.com/principles/#open-closed-principle) پشتیبانی می‌کند، زیرا سیستم می‌تواند انواع جدیدی را بدون تغییر کد موجود معرفی کند. ### معایب: @@ -142,10 +142,10 @@ public static void main(String[] args) { ## الگوهای طراحی مرتبط با جاوا -* [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. -* [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. -* [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. -* [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. +> * [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. +> * [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. +> * [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. +> * [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. ## منابع و اعتبارات From 155e20b923e6a1a26ddbfd5fa94e82d4ae5a7cf8 Mon Sep 17 00:00:00 2001 From: Keivan Shirkoubian Date: Mon, 21 Apr 2025 22:52:56 +0330 Subject: [PATCH 28/32] Update README.md -fixed alignment in bullets --- localization/fa/factory/README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index 26f92f5b60a2..90d0c1a2cca8 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -123,10 +123,11 @@ public static void main(String[] args) { > * [java.util.ResourceBundle#getBundle()](https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-) > * [java.text.NumberFormat#getInstance()](https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getInstance--) > * [java.nio.charset.Charset#forName()](https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html#forName-java.lang.String-) -> * [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) (اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند) +> * این مورد [java.net.URLStreamHandlerFactory#createURLStreamHandler(String)](https://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html) اشیاء singleton مختلف را بر اساس یک پروتکل بازمی‌گرداند > * [java.util.EnumSet#of()](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html#of(E)) > * [javax.xml.bind.JAXBContext#createMarshaller()](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXBContext.html#createMarshaller--) و متدهای مشابه دیگر. -> * JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. +> +> * کتابخانه‌ی JavaFX از الگوهای factory برای ایجاد کنترل‌های مختلف رابط کاربری متناسب با نیازهای محیط کاربر استفاده می‌کند. ## مزایا و معایب الگوی factory @@ -137,18 +138,18 @@ public static void main(String[] args) { ### معایب: -* کد می‌تواند به دلیل معرفی چندین کلاس اضافی پیچیده‌تر شود. -* استفاده بیش از حد می‌تواند کد را کمتر خوانا کند اگر پیچیدگی ایجاد اشیاء کم یا غیرضروری باشد. +> * کد می‌تواند به دلیل معرفی چندین کلاس اضافی پیچیده‌تر شود. +> * استفاده بیش از حد می‌تواند کد را کمتر خوانا کند اگر پیچیدگی ایجاد اشیاء کم یا غیرضروری باشد. ## الگوهای طراحی مرتبط با جاوا -> * [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. -> * [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. -> * [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. -> * [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. +> * الگوی [Abstract Factory](https://java-design-patterns.com/patterns/abstract-factory/): می‌توان آن را نوعی factory در نظر گرفت که با گروهی از محصولات کار می‌کند. +> * الگوی [Singleton](https://java-design-patterns.com/patterns/singleton/): اغلب همراه با factory استفاده می‌شود تا اطمینان حاصل شود که یک کلاس تنها یک نمونه دارد. +> * الگوی [Builder](https://java-design-patterns.com/patterns/builder/): ساخت یک شیء پیچیده را از نمایش آن جدا می‌کند، مشابه نحوه‌ای که factoryها مدیریت نمونه‌سازی را انجام می‌دهند. +> * الگوی [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): یک factory از محتوای غیرقابل تغییر با رابط‌های builder و factory جداگانه است. ## منابع و اعتبارات * [Design Patterns: Elements of Reusable Object-Oriented Software](https://amzn.to/3w0Rk5y) * [Effective Java](https://amzn.to/4cGk2Jz) -* [Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software](https://amzn.to/3UpTLrG) \ No newline at end of file +* [Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software](https://amzn.to/3UpTLrG) From ba5872a878a75f3bd3aa79e9df6683f6ce0d9413 Mon Sep 17 00:00:00 2001 From: Keivan Shirkoubian Date: Mon, 21 Apr 2025 22:59:14 +0330 Subject: [PATCH 29/32] Update README.md -changed tags to English --- localization/fa/factory/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/localization/fa/factory/README.md b/localization/fa/factory/README.md index 90d0c1a2cca8..db41813464e3 100644 --- a/localization/fa/factory/README.md +++ b/localization/fa/factory/README.md @@ -5,11 +5,11 @@ description: "الگوی طراحی factory در جاوا را با مثال‌ category: structural language: fa tag: - - انتزاع - - کپسوله‌سازی - - گروه چهار نفره - - نمونه‌سازی - - چندریختی + - Abstraction + - Encapsulation + - Gang of Four + - Instantiation + - Polymorphism --- ## هدف از الگوی طراحی factory From 8e9d1f8609ff74c8e1d742b7b2363930ee164c3c Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Wed, 23 Apr 2025 12:15:32 +0330 Subject: [PATCH 30/32] abstract-factory: added persian translation --- localization/fa/abstract-factory/README.md | 223 ++++++++++++++++++ .../etc/abstract-factory.urm.png | Bin 0 -> 82368 bytes 2 files changed, 223 insertions(+) create mode 100644 localization/fa/abstract-factory/README.md create mode 100644 localization/fa/abstract-factory/etc/abstract-factory.urm.png diff --git a/localization/fa/abstract-factory/README.md b/localization/fa/abstract-factory/README.md new file mode 100644 index 000000000000..10260788e6a4 --- /dev/null +++ b/localization/fa/abstract-factory/README.md @@ -0,0 +1,223 @@ +--- +title: "الگوی طراحی Abstract Factory در جاوا: مهارت در ایجاد شیء با ظرافت" +shortTitle: Abstract Factory +description: "با مثال‌های دنیای واقعی، دیاگرام‌های کلاس و آموزش‌ها، الگوی Abstract Factory را در جاوا بیاموزید. منظور، کاربرد، مزایا و نمونه‌های واقعی آن را درک کنید و دانش طراحی الگوهایتان را افزایش دهید." +category: Creational +language: fa +tag: + - Abstraction + - Decoupling + - Gang of Four + - Instantiation + - Polymorphism +--- + +## همچنین به عنوان + +* کیت + +## هدف از الگوی طراحی Abstract Factory + +الگوی Abstract Factory در جاوا یک واسط برای ایجاد خانواده‌هایی از اشیای مرتبط یا وابسته فراهم می‌کند بدون آنکه کلاس‌های مشخص آن‌ها را تعیین کند، و این کار موجب افزایش مدولاریتی و انعطاف‌پذیری در طراحی نرم‌افزار می‌شود. + +## توضیح دقیق الگوی Abstract Factory با مثال‌های دنیای واقعی + +مثال دنیای واقعی + +> تصور کنید یک شرکت مبلمان وجود دارد که از الگوی Abstract Factory در جاوا برای تولید سبک‌های مختلف مبلمان استفاده می‌کند: مدرن، ویکتوریایی و روستایی. هر سبک شامل محصولاتی مانند صندلی‌ها، میزها و کاناپه‌ها است. برای اطمینان از یکنواختی در هر سبک، شرکت از یک الگوی Abstract Factory استفاده می‌کند. +> +> در این سناریو، Abstract Factory یک واسط برای ایجاد خانواده‌هایی از اشیای مبلمان مرتبط (صندلی‌ها، میزها، کاناپه‌ها) است. هر Factory مشخص (کارخانه‌ی مبلمان مدرن، کارخانه‌ی مبلمان ویکتوریایی، کارخانه‌ی مبلمان روستایی) این واسط را پیاده‌سازی می‌کند و مجموعه‌ای از محصولات مطابق با سبک خاص ایجاد می‌کند. به این ترتیب، مشتریان می‌توانند یک مجموعه کامل از مبلمان مدرن یا ویکتوریایی ایجاد کنند بدون اینکه نگران جزئیات ساخت آن‌ها باشند. این باعث حفظ یکنواختی سبک می‌شود و امکان تغییر آسان سبک مبلمان را فراهم می‌کند. + +به زبان ساده + +> کارخانه‌ای از کارخانه‌ها؛ یک Factory یا کارخانه که مجموعه‌ای از کارخانه‌های مرتبط یا وابسته را بدون مشخص کردن کلاس‌های concrete آن‌ها گروه‌بندی می‌کند. + +ویکی‌پدیا می‌گوید + +> الگوی Abstract Factory راهی برای کپسوله کردن مجموعه‌ای از کارخانه‌های منحصر به فرد با یک تم مشترک بدون تعیین کلاس‌های concrete آن‌ها فراهم می‌کند. + +دیاگرام کلاس + +![Abstract Factory class diagram](./etc/abstract-factory.urm.png "Abstract Factory class diagram") + +## مثال برنامه‌نویسی از Abstract Factory در جاوا + +برای ایجاد یک پادشاهی با استفاده از الگوی Abstract Factory در جاوا، ما به اشیایی با یک تم مشترک نیاز داریم. یک پادشاهی اِلف (Elf) به یک پادشاه اِلف، یک قلعه‌ی اِلف، و یک ارتش اِلف نیاز دارد، در حالی که یک پادشاهی اورک (Orc) به یک پادشاه اورک، یک قلعه‌ی اورک، و یک ارتش اورک نیاز دارد. بین اشیای موجود در پادشاهی وابستگی وجود دارد. + +ترجمه‌ی مثال پادشاهی بالا. ابتدا ما برخی واسط‌ها و پیاده‌سازی‌هایی برای اشیای موجود در پادشاهی داریم: + +```java +public interface Castle { + String getDescription(); +} + +public interface King { + String getDescription(); +} + +public interface Army { + String getDescription(); +} + +// Elven implementations -> +public class ElfCastle implements Castle { + static final String DESCRIPTION = "This is the elven castle!"; + + @Override + public String getDescription() { + return DESCRIPTION; + } +} + +public class ElfKing implements King { + static final String DESCRIPTION = "This is the elven king!"; + + @Override + public String getDescription() { + return DESCRIPTION; + } +} + +public class ElfArmy implements Army { + static final String DESCRIPTION = "This is the elven Army!"; + + @Override + public String getDescription() { + return DESCRIPTION; + } +} + +// Orcish implementations similarly -> ... +``` + +سپس واسط و پیاده‌سازی‌های کارخانه‌ی پادشاهی را داریم: + +```java +public interface KingdomFactory { + Castle createCastle(); + King createKing(); + Army createArmy(); +} + +public class ElfKingdomFactory implements KingdomFactory { + + @Override + public Castle createCastle() { + return new ElfCastle(); + } + + @Override + public King createKing() { + return new ElfKing(); + } + + @Override + public Army createArmy() { + return new ElfArmy(); + } +} + +// Orcish implementations similarly -> ... +``` + +اکنون می‌توانیم یک کارخانه برای کارخانه‌های مختلف پادشاهی طراحی کنیم. در این مثال، ما `FactoryMaker` را ایجاد کردیم که مسئول برگرداندن یک نمونه از `ElfKingdomFactory` یا `OrcKingdomFactory` است. مشتری می تواند از `FactoryMaker` برای ایجاد کارخانه concrete مورد نظر استفاده کند که به نوبه خود اشیاء concrete مختلف (مشتق شده از ارتش، پادشاه، قلعه) را تولید می‌کند. در این مثال، ما همچنین از یک enum برای پارامتری کردن نوع کارخانه پادشاهی که مشتری درخواست خواهد کرد استفاده کردیم. + +```java +public static class FactoryMaker { + + public enum KingdomType { + ELF, ORC + } + + public static KingdomFactory makeFactory(KingdomType type) { + return switch (type) { + case ELF -> new ElfKingdomFactory(); + case ORC -> new OrcKingdomFactory(); + }; + } +} +``` + +نمونه‌ای از تابع اصلی برنامه: + +```java +LOGGER.info("elf kingdom"); +createKingdom(Kingdom.FactoryMaker.KingdomType.ELF); +LOGGER.info(kingdom.getArmy().getDescription()); +LOGGER.info(kingdom.getCastle().getDescription()); +LOGGER.info(kingdom.getKing().getDescription()); + +LOGGER.info("orc kingdom"); +createKingdom(Kingdom.FactoryMaker.KingdomType.ORC); +LOGGER.info(kingdom.getArmy().getDescription()); +LOGGER.info(kingdom.getCastle().getDescription()); +LOGGER.info(kingdom.getKing().getDescription()); +``` + +خروجی برنامه: + +``` +07:35:46.340 [main] INFO com.iluwatar.abstractfactory.App -- elf kingdom +07:35:46.343 [main] INFO com.iluwatar.abstractfactory.App -- This is the elven army! +07:35:46.343 [main] INFO com.iluwatar.abstractfactory.App -- This is the elven castle! +07:35:46.343 [main] INFO com.iluwatar.abstractfactory.App -- This is the elven king! +07:35:46.343 [main] INFO com.iluwatar.abstractfactory.App -- orc kingdom +07:35:46.343 [main] INFO com.iluwatar.abstractfactory.App -- This is the orc army! +07:35:46.343 [main] INFO com.iluwatar.abstractfactory.App -- This is the orc castle! +07:35:46.343 [main] INFO com.iluwatar.abstractfactory.App -- This is the orc king! +``` + +## چه زمانی باید از الگوی Abstract Factory در جاوا استفاده کرد؟ + +* زمانی که سیستم باید مستقل از نحوه‌ی ایجاد، ترکیب و نمایش محصولاتش باشد. +* زمانی که نیاز به پیکربندی سیستم با یکی از چند خانواده محصول دارید. +* زمانی که باید خانواده‌ای از اشیای مرتبط با هم استفاده شوند، برای اطمینان از یکنواختی. +* زمانی که می‌خواهید کتابخانه‌ای از محصولات را فراهم کنید و فقط واسط‌های آن‌ها را نمایان کنید، نه پیاده‌سازی‌ها را. +* زمانی که طول عمر وابستگی‌ها کوتاه‌تر از مصرف‌کننده باشد. +* زمانی که نیاز به ساخت وابستگی‌ها با مقادیر یا پارامترهای زمان اجرا باشد. +* زمانی که باید در زمان اجرا انتخاب کنید که کدام خانواده از محصول را استفاده کنید. +* زمانی که افزودن محصولات یا خانواده های جدید نباید نیاز به تغییر در کد موجود داشته باشد. + +## آموزش‌های الگوی Abstract Factory در جاوا + +* [Abstract Factory Design Pattern in Java (DigitalOcean)](https://www.digitalocean.com/community/tutorials/abstract-factory-design-pattern-in-java) +* [Abstract Factory (Refactoring Guru)](https://refactoring.guru/design-patterns/abstract-factory) + +## مزایا و معایب الگوی Abstract Factory + +مزایا: + +* انعطاف‌پذیری: به راحتی می‌توان خانواده‌های محصول را تعویض کرد بدون تغییر کد. + +* جداسازی (Decoupling): کد مشتری فقط با واسط‌های انتزاعی کار می‌کند که باعث قابلیت حمل و نگهداری می‌شود. + +* قابلیت استفاده مجدد: کارخانه‌های انتزاعی و محصولات امکان استفاده مجدد از مؤلفه‌ها را فراهم می‌کنند. + +* قابلیت نگهداری: تغییرات در خانواده‌های محصول محلی شده و به‌روزرسانی را ساده‌تر می‌کند. + +معایب: + +* پیچیدگی: تعریف واسط‌های انتزاعی و کارخانه‌های مشخص سربار اولیه ایجاد می‌کند. + +* غیرمستقیم بودن: کد مشتری از طریق کارخانه‌ها با محصولات کار می‌کند که ممکن است شفافیت را کاهش دهد. + +## نمونه‌های واقعی استفاده از الگوی Abstract Factory در جاوا + +* کلاس‌های `LookAndFeel` در Java Swing برای ارائه گزینه های مختلف look-and-feel +* پیاده‌سازی‌های مختلف در Java AWT برای ایجاد اجزای مختلف GUI +* [javax.xml.parsers.DocumentBuilderFactory](http://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/DocumentBuilderFactory.html) +* [javax.xml.transform.TransformerFactory](http://docs.oracle.com/javase/8/docs/api/javax/xml/transform/TransformerFactory.html#newInstance--) +* [javax.xml.xpath.XPathFactory](http://docs.oracle.com/javase/8/docs/api/javax/xml/xpath/XPathFactory.html#newInstance--) + +## الگوهای طراحی مرتبط با جاوا + +* [Factory Method](https://java-design-patterns.com/patterns/factory-method/): الگوی کارخانه‌ی انتزاعی از روش‌های کارخانه‌ای برای ایجاد محصولات استفاده می‌کند. +* [Singleton](https://java-design-patterns.com/patterns/singleton/): کلاس‌های کارخانه‌ی انتزاعی اغلب به صورت Singleton پیاده‌سازی می‌شوند. +* [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): مشابه کارخانه‌ی انتزاعی اما بر پیکربندی و مدیریت مجموعه‌ای از اشیای مرتبط تمرکز دارد. + +## منابع و ارجاعات + +* [Design Patterns: Elements of Reusable Object-Oriented Software](https://amzn.to/3w0pvKI) +* [Design Patterns in Java](https://amzn.to/3Syw0vC) +* [Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software](https://amzn.to/49NGldq) +* [Java Design Patterns: A Hands-On Experience with Real-World Examples](https://amzn.to/3HWNf4U) diff --git a/localization/fa/abstract-factory/etc/abstract-factory.urm.png b/localization/fa/abstract-factory/etc/abstract-factory.urm.png new file mode 100644 index 0000000000000000000000000000000000000000..836858a2c652f55723cff879d1058248e1d2799c GIT binary patch literal 82368 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 MUHx3vIVCg!0PQSJ00000 literal 0 HcmV?d00001 From 99bc6567097ccdc2e7cc523a12c46a3602f9cb5b Mon Sep 17 00:00:00 2001 From: Seyyed Keivan Shirkoubian Date: Wed, 23 Apr 2025 12:21:41 +0330 Subject: [PATCH 31/32] abstract-factory: fixed bullets problems --- localization/fa/abstract-factory/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/localization/fa/abstract-factory/README.md b/localization/fa/abstract-factory/README.md index 10260788e6a4..0e7ad9b60253 100644 --- a/localization/fa/abstract-factory/README.md +++ b/localization/fa/abstract-factory/README.md @@ -187,19 +187,19 @@ LOGGER.info(kingdom.getKing().getDescription()); مزایا: -* انعطاف‌پذیری: به راحتی می‌توان خانواده‌های محصول را تعویض کرد بدون تغییر کد. +> * انعطاف‌پذیری: به راحتی می‌توان خانواده‌های محصول را تعویض کرد بدون تغییر کد. -* جداسازی (Decoupling): کد مشتری فقط با واسط‌های انتزاعی کار می‌کند که باعث قابلیت حمل و نگهداری می‌شود. +> * جداسازی (Decoupling): کد مشتری فقط با واسط‌های انتزاعی کار می‌کند که باعث قابلیت حمل و نگهداری می‌شود. -* قابلیت استفاده مجدد: کارخانه‌های انتزاعی و محصولات امکان استفاده مجدد از مؤلفه‌ها را فراهم می‌کنند. +> * قابلیت استفاده مجدد: کارخانه‌های انتزاعی و محصولات امکان استفاده مجدد از مؤلفه‌ها را فراهم می‌کنند. -* قابلیت نگهداری: تغییرات در خانواده‌های محصول محلی شده و به‌روزرسانی را ساده‌تر می‌کند. +> * قابلیت نگهداری: تغییرات در خانواده‌های محصول محلی شده و به‌روزرسانی را ساده‌تر می‌کند. معایب: -* پیچیدگی: تعریف واسط‌های انتزاعی و کارخانه‌های مشخص سربار اولیه ایجاد می‌کند. +> * پیچیدگی: تعریف واسط‌های انتزاعی و کارخانه‌های مشخص سربار اولیه ایجاد می‌کند. -* غیرمستقیم بودن: کد مشتری از طریق کارخانه‌ها با محصولات کار می‌کند که ممکن است شفافیت را کاهش دهد. +> * غیرمستقیم بودن: کد مشتری از طریق کارخانه‌ها با محصولات کار می‌کند که ممکن است شفافیت را کاهش دهد. ## نمونه‌های واقعی استفاده از الگوی Abstract Factory در جاوا @@ -211,9 +211,9 @@ LOGGER.info(kingdom.getKing().getDescription()); ## الگوهای طراحی مرتبط با جاوا -* [Factory Method](https://java-design-patterns.com/patterns/factory-method/): الگوی کارخانه‌ی انتزاعی از روش‌های کارخانه‌ای برای ایجاد محصولات استفاده می‌کند. -* [Singleton](https://java-design-patterns.com/patterns/singleton/): کلاس‌های کارخانه‌ی انتزاعی اغلب به صورت Singleton پیاده‌سازی می‌شوند. -* [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): مشابه کارخانه‌ی انتزاعی اما بر پیکربندی و مدیریت مجموعه‌ای از اشیای مرتبط تمرکز دارد. +* الگوی [Factory Method](https://java-design-patterns.com/patterns/factory-method/): الگوی کارخانه‌ی انتزاعی از روش‌های کارخانه‌ای برای ایجاد محصولات استفاده می‌کند. +* الگوی [Singleton](https://java-design-patterns.com/patterns/singleton/): کلاس‌های کارخانه‌ی انتزاعی اغلب به صورت Singleton پیاده‌سازی می‌شوند. +* الگوی [Factory Kit](https://java-design-patterns.com/patterns/factory-kit/): مشابه کارخانه‌ی انتزاعی اما بر پیکربندی و مدیریت مجموعه‌ای از اشیای مرتبط تمرکز دارد. ## منابع و ارجاعات From 3cfb1e31d2474dee1c8ea086fbd9dcc76e836acd Mon Sep 17 00:00:00 2001 From: Maziyar Gerami Date: Fri, 16 May 2025 15:34:51 +0330 Subject: [PATCH 32/32] "Minor improvement Co-authored-by: keivanshir " --- localization/fa/abstract-factory/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localization/fa/abstract-factory/README.md b/localization/fa/abstract-factory/README.md index 0e7ad9b60253..85dce3437ba4 100644 --- a/localization/fa/abstract-factory/README.md +++ b/localization/fa/abstract-factory/README.md @@ -12,7 +12,7 @@ tag: - Polymorphism --- -## همچنین به عنوان +## همچنین به این عنوان شناخته می‌شود * کیت