ترکیب policy‌ها در compile time برای اعتبارسنجی password در C++

چرا مهم است

اگر با C++ کار می‌کنی، این مثال تفاوت ترکیب policy‌ها در compile time و runtime را نشان می‌دهد. نکتهٔ اصلی برایت این است که تنظیمات validator می‌تواند بخشی از خود type باشد.

قبل از خواندن، این‌ها را بدان۵ مفهوم
runtime

مرحله‌ای که برنامه در حال اجراست؛ در مقابل compile time که برنامه برای اجرا آماده می‌شود.

بیشتر درباره این مفهوم

Policy-based Design

روشی در طراحی که رفتار یک جزء را با ترکیب policy‌های مستقل مشخص می‌کند؛ در C++ این policy‌ها می‌توانند از طریق template به یک type داده شوند.

در حال نگارش

Dynamic Polymorphism

سازوکاری که در آن انتخاب پیاده‌سازی رفتار در runtime و بر اساس type واقعی object انجام می‌شود.

در حال نگارش

Decorator

الگوی طراحی برای افزودن رفتار به یک object با قرار دادن آن درون object دیگری که رابط سازگاری ارائه می‌کند.

در حال نگارش

Concepts

قابلیتی در C++ برای بیان محدودیت‌ها و الزام‌هایی که آرگومان‌های template باید برآورده کنند.

در حال نگارش

Daniel Gómez Vergel در مقاله‌ای، طراحی یک password validator ساده در C++ را بررسی می‌کند که با ترکیب policy‌های مستقل اعتبارسنجی، در compile time تنظیم می‌شود. در این طراحی، تنظیمات validator بخشی از خود type است؛ یعنی ترکیب policy‌ها به runtime موکول نمی‌شود.

مقاله برای مقایسه، یک راه‌حل متداول object-oriented را مطرح می‌کند: استفاده از Dynamic Polymorphism و الگوی Decorator برای انتخاب و ترکیب policy‌های اعتبارسنجی در runtime. رویکرد معرفی‌شده مسیر متفاوتی دارد و ترکیب را به‌طور کامل در compile time انجام می‌دهد.

این password validator نمونه‌ای برای بررسی چند تکنیک C++ است: Policy-based Design،؜ قابلیت Concepts و قابلیت‌های مدرن دیگری مانند template for expansions. تمرکز متن در دسترس بر شیوهٔ ترکیب policy‌ها و جایگاه تنظیمات در type است؛ جزئیات پیاده‌سازی یا قواعد مشخص اعتبارسنجی password در آن ارائه نشده است.

نکته کلیدی

به زمان ترکیب policy‌ها توجه کن: در رویکرد مقاله، این کار کاملاً در compile time انجام می‌شود. این تفاوت را با انتخاب و ترکیب در runtime از طریق Dynamic Polymorphism و Decorator به خاطر بسپار.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۳)