Table of Contents
مقدمه مقدماتی
سیستم های پردازش داده های مهندسی باید انواع مختلفی از فرمت های ورودی را مدیریت کنند - از فایل های استاندارد CSV و JSON گرفته تا طرح های اختصاصی تخصصی مورد استفاده در CAD، شبیه سازی و جریان سنسور IoT.Ensuring سازگاری در سراسر این فرمت ها بدون بازنویسی منطق هسته ای، یک الگوی داده مداوم است: آن را در پشت یک رابط مشترک، که اجازه می دهد نمونه های کلاس را با استفاده از این الگوی پردازش مستقیم، توضیح دهد.
درک الگوی روش کارخانه
الگوی روش کارخانه یک الگوی طراحی آفرینش ازگانگ چهار است. ایده اصلی آن این است که یک رابط یا کلاس انتزاعی برای ایجاد یک شی را تعریف کنیم، اما اجازه دهید زیر کلاس ها نوع اشیا را تغییر دهند که ایجاد می شوند.این اصل باز / بسته را ترویج می کند: یک سیستم برای گسترش (انواع محصول جدید) باز است، اما بسته برای اصلاح (کد بدون تغییر باقی مانده) بسته است.
در اصطلاحات نمودار کلاس، الگوی شامل:
- محصول - یک رابط یا کلاس انتزاعی که عملیات را تعریف می کند که همه محصولات بتن باید پیاده سازی کنند.
- محصول دفع - پیاده سازی های خاص از رابط محصول.
- - یک کلاس انتزاعی که روش کارخانه (معمولا را اعلام می کند، خالق همچنین ممکن است شامل منطق کسب و کار که روش کارخانه را می نامد.
- ConputCreator [FLT 1] - زیر کلاس هایی که روش کارخانه را برای بازگشت موارد محصولات بتونی نادیده می گیرند.
این جدایی منطق ایجاد از منطق کسب و کار چیزی است که الگوی را در خط لوله پردازش داده ها بسیار قدرتمند می کند.
چرا پردازش داده های مهندسی به یک کارخانه نیاز دارد
تیم های مهندسی اغلب با فرمت های داده ناهمگن کار می کنند.یک سیستم واحد ممکن است نیاز به:
- فایل های شبیه سازی Parse در HDF5، CSV و فرمت های باینری اختصاصی.
- اطلاعات پیکربندی را از XML، YAML یا متغیرهای محیطی بخوانید.
- واردات مدل های CAD از گام، IGES یا فرمت های نرم افزار بومی.
- اطلاعات سنسور زمان واقعی را از طریق MQTT، جریان های HTTP یا WebSockets مصرف کنید.
بدون یک الگوی طراحی، توسعه دهندگان ممکن است کد پایه را با [FLT 1] یا بیان کنند تا خواننده مناسب را انتخاب کنند، این باعث می شود سیستم شکننده شود - اضافه کردن یک فرمت جدید نیاز به اصلاح این شاخه های مشروط، افزایش احتمال اشکالات. الگوی کارخانه، منطق انتخاب را به زیر کلاس های اختصاصی منتقل می کند، بنابراین اضافه کردن یک فرمت جدید به معنی یک کد بتن جدید و یک محصول غیر فعال است.
پیاده سازی مرحله-forward
بیایید از طریق پیاده سازی عملی در سبک زبان آگنوستیک قدم برداریم ( همان منطق به همان اندازه به جاوا، C#، TypeScript، پایتون یا PHP اعمال می شود.)
مرحله 1: رابط محصول را تعریف کنید
یک رابط ایجاد کنید که همه خوانندگان داده ها پیاده سازی می کنند.این رابط روش های خواندن و احتمالاً تبدیل داده ها را تعریف می کند.
interface DataReader {
void readData();
List<Record> getRecords();
}
مرحله ۲: ایجاد پیاده سازی های بتنی
استفاده از رابط برای هر فرمت پشتیبانی شده
class CSVReader implements DataReader {
// … constructor, parsing logic …
public void readData() { … }
public List<Record> getRecords() { … }
}
class JSONReader implements DataReader {
// … similar …
}
مرحله 3: خالق را با یک روش کارخانه تعریف کنید
کلاس سازنده انتزاعی روش کارخانه را اعلام می کند، همچنین ممکن است حاوی منطق پردازش مشترک باشد که از محصول استفاده می کند.
abstract class DataReaderFactory {
// Factory method
abstract DataReader createReader();
// Template method that uses the product
public List<Record> processData() {
DataReader reader = createReader();
reader.readData();
return reader.getRecords();
}
}
مرحله 4: پیاده سازی کارخانه های بتنی
هر زیر کلاس روش کارخانه را برای بازگشت یک خواننده خاص، لغو می کند.
class CSVReaderFactory extends DataReaderFactory {
@Override
DataReader createReader() {
return new CSVReader("input.csv");
}
}
class JSONReaderFactory extends DataReaderFactory {
@Override
DataReader createReader() {
return new JSONReader("input.json");
}
}
اکنون کد مشتری می تواند با کارخانه انتزاعی کار کند و کارخانه بتن مناسب را بر اساس تنظیمات یا شرایط زمان اجرا انتخاب کند:
DataReaderFactory factory = getFactoryFromConfig(); // e.g., returns CSVReaderFactory
List<Record> records = factory.processData();
مشتری هرگز به طور مستقیم یک (FLT:8) یا را به سرعت راهنمایی نمی کند، بلکه تنها با کارخانه انتزاعی و رابط محصول ارتباط برقرار می کند.این برش جوهر الگوی است.
اضافه کردن یک فرمت جدید
فرض کنید ما باید از XML پشتیبانی کنیم و فقط باید ایجاد کنیم:
- [FLT 10 ]
- [[ویرایش]
هیچ تغییر کد دیگری لازم نیست. الگوی روش کارخانه باعث می شود سیستم واقعاً غیر قابل پیش بینی باشد.
برنامه های کاربردی در دنیای واقعی در مهندسی
الگوی روش کارخانه در نرم افزار مهندسی در همه جا وجود دارد، در اینجا چند مثال مشخص وجود دارد:
شرکت های وارد کننده فایل CAD
یک برنامه CAD باید از مرحله ی پله (AP203 /AP214)، IGES و فرمت های مخصوص فروشنده مانند SolidWorks SLDPRT بخواند.هر فرمت دارای یک تجزیه و تحلیل کاملا متفاوت است.این روش کارخانه اجازه می دهد تا برنامه ی مناسب را بر اساس پسوند فایل یا انتخاب کاربر تعیین کند.
مشخصات عمومی Data Aggregation
یک پلت فرم IoT تلهومتر را از دستگاه هایی که از MQTT، CoAP، HTTP و پروتکل های باینری اختصاصی استفاده می کنند جمع آوری می کند.یک الگوی کارخانه، دسته بندی پروتکل های مناسب را ایجاد می کند و به این ترتیب امکان می دهد که داده های مصرفی را به طور یکنواخت درمان کنند.
Directus و Headless CMS
Directus یک CMS محبوب است که محتوای را از بسیاری از منابع مدیریت می کند - پایگاه داده ها، آپلود فایل، نقاط انتهایی API و فروشگاه های داده سفارشی می تواند بدون لمس کردن خود را بر روی یک فلسفه معماری مختلف، الگوی کارخانه می تواند در هنگام گسترش خط لوله پردازش داده های آن اعمال شود.
مزایای الگوی کارخانه
- برای تمدید باز کنید، بسته برای اصلاح [FLT 1] - فرمت های داده جدید را می توان با اضافه کردن کلاس های جدید پشتیبانی کرد، نه با ویرایش کردن آنهایی که موجود است.
- کد استفاده مجدد - منطق پردازش مشترک در کلاس خالق (به عنوان مثال، دستکاری خطا، ورود، کاتتر) در سراسر خوانندگان بتنی به اشتراک گذاشته شده است.
- آزمون پذیری - روش کارخانه می تواند در تست های واحد برای تزریق خوانندگان مسخره، قادر به آزمایش جداگانه از منطق کسب و کار بدون لمس منابع داده واقعی است.
- [[۱] [۱۰] [۱۰] [۱۰] [۱]] [۱۰] [۱۰]] [[۱۰]]] [[۱۰]]] [[۱۰]]]] [[۱۰]]]] [[۱۰]]]]] [[۳]]]] [۱۰]] [۱]]] [۳]] [۳]] [۱] [۳]] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۵] [۲] [۳]]] [۵] [۵] [۲] [۲]] [۳]]]] [۲] [۳]]] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳]]] [۳] [۳] [۳] [۳]]] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۲] [۳] [۳
- مسئولیت پذیری - هر خالق و محصول بتنی بر یک فرمت متمرکز است، اطاعت از اصل مسئولیت واحد.
بهترین تمرین ها و مشکلات رایج
هنگام استفاده از روش کارخانه
از این الگو زمانی استفاده کنید که:
- شما از زمان که کلاس دقیق شی مورد نیاز سیستم شما را می دانید، اطلاع ندارید.
- شما می خواهید یک قلاب برای طبقه بندی ها برای گسترش ایجاد شی ارائه دهید.
- شما می خواهید از اشیاء موجود استفاده کنید یا به جای ایجاد موارد جدید در هر زمان (یک روش کارخانه می تواند یک شیء جمع شده یا تکتون را بازگرداند) استفاده کنید.
هنگام اجتناب از Overcomplication
اگر شما فقط یک محصول یا منطق انتخاب دارید، بی اهمیت است (به عنوان مثال، همیشه همان خواننده)، یک روش کارخانه پیچیدگی غیرضروری را اضافه می کند.در این موارد، یک سازنده ساده یا یک روش کارخانه استاتیک (بدون طبقه بندی) ممکن است کافی باشد.
ترکیب با دیگر الگوهای
روش کارخانه اغلب با Strategy (برای تغییر الگوریتم ها) و روش کار می کند (برای تعریف اسکلت یک الگوریتم در حالی که برخی از مراحل را به زیر کلاس ها تقسیم می کند).
نتیجه گیری
الگوی روش کارخانه یک راه اثبات شده برای ساخت سیستم های پردازش داده های انعطاف پذیر و قابل نگهداری است.با ایجاد اشیاء یکپارچه، آن را "چه چیزی" از "چگونه"، اجازه می دهد تیم ها برای پشتیبانی از فرمت های داده های جدید و منابع بدون ناراحتی منطق موجود است، آیا شما در حال ساخت یک وارد کننده CAD، یک خط لوله IoT، یا گسترش یک CMS بدون سر مانند Directus، این الگوی رابط کاربری را فراهم می کند که هر یک سیستم پیکربندی دقیق را تنظیم می کند و تنظیم می کند.
برای مطالعه بیشتر در الگوی روش کارخانه، بررسی اصلاح Guru توضیح و اصل Gang از کتاب برای کاربرد در دنیای واقعی در مهندسی داده ها، atterPns از معماری شرکت [FLT5: Fow] نیز توسط مارتین Fowler توصیه می شود.