کتاب Hands-On Design Patterns with C++: Solve common C++ problems with modern design patterns and build robust applications, 2nd Edition (الگوهای طراحی عملی با C++: حل مشکلات رایج C++ با الگوهای طراحی مدرن و ایجاد برنامههای کاربردی قوی، ویرایش دوم) از بهترین منابع آموزش الگوهای طراحی و به کارگیری آن در زبان سیپلاسپلاس میباشد.
در ادامه مقدمهای از کتاب Hands-On Design Patterns with C++ را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Hands-On Design Patterns with C++:
هنگام بررسی این کتاب، برخی از شما خواهند پرسید: کتاب دیگری در مورد الگوهای طراحی در C++؟ چرا آن، و چرا اکنون؟ آیا همه چیزهایی که در مورد الگوهای طراحی باید بدانید قبلاً نوشته نشده است؟
دلایل متعددی وجود دارد که چرا کتاب دیگری در مورد الگوهای طراحی نوشته شده است، اما اول از همه، این یک کتاب C++ است—این کتابی در مورد الگوهای طراحی در C++ نیست، بلکه کتابی است در مورد الگوهای طراحی در C++، و تاکید آن را متمایز میکند. C++ تمام قابلیتهای یک زبان شیگرا سنتی را دارد، بنابراین تمام الگوهای طراحی شیگرا کلاسیک مانند Factory و Strategy را می توان در C++ پیاده سازی کرد.
تعدادی از آنها در این کتاب پوشش داده شده است. اما قدرت کامل C++ زمانی تحقق مییابد که از قابلیتهای برنامهنویسی عمومی آن استفاده کنید. به یاد داشته باشید که الگوهای طراحی چالشهای طراحی مکرر و راهحل پذیرفتهشده رایج هستند – هر دو طرف در یک الگو به یک اندازه مهم هستند. منطقی است که وقتی ابزارهای جدید در دسترس قرار میگیرند، راه حلهای جدید امکان پذیر میشوند.
با گذشت زمان، جامعه برخی از این راهحلها را بهعنوان سودمندترین راهحلها به طور کلی میپذیرد، و تنوع جدیدی از یک الگوی طراحی قدیمی متولد میشود – همان چالش اما راهحل ترجیحی متفاوت. اما گسترش قابلیتها مرزهای جدیدی را نیز باز میکند – با ابزارهای جدید در اختیار ما، چالشهای طراحی جدیدی به وجود میآیند.
دیگران ممکن است انتظار داشته باشند که کتاب کلاسیک “الگوهای طراحی: عناصر نرم افزار شیگرا قابل استفاده مجدد” را پیدا کنند. این «آن کتاب نیست، و من معتقد نیستم که زمان مناسبی برای چنین کتابی باشد. کتاب “گروه چهار” بدیع و حتی انقلابی بود و زبان الگوهای طراحی را به جامعه برنامهنویسی گسترده معرفی کرد.
این یک بار برای همیشه انجام شده است. همچنین طبقهبندی منظمی از الگوهای طراحی را ایجاد کرد، و آن بخش نیز تقریباً پیر نشده است: با گسترش واژگان الگوی ما، الگوهایی را یافتیم که به راحتی در یک دسته بندی خاص قرار نمیگیرند. ما همچنین مفهوم الگوهای طراحی را فراتر از برنامهنویسی شیگرا گسترش دادیم و دریافتیم که برخی از این الگوها به شدت شبیه پسرعموهای شیگرا خود هستند در حالی که برخی دیگر کاملاً جدید و متفاوت هستند.
علاوه بر این، در C++ و سایر زبانها با قابلیتهای بسیار متفاوت، الگویی که به یک نیاز پاسخ میدهد ممکن است کاملاً متفاوت به نظر برسد. نکته پایانی این است که طبقهبندی اصلی الگوها، اگرچه هنوز مفید است، اما تاکنون استثناهای بیشتری نسبت به نمونههای معمولی دارد، و چشمانداز الگو برای یک طبقهبندی جدید که چندان مصنوعی به نظر نمیرسد بسیار واگرا شده است. شاید با گذشت زمان، همانطور که هنر را بیشتر توسعه میدهیم، روندهای جدیدی از چشمانداز پرنده از چشمانداز الگوی گسترشیافته ظاهر شود، اما هنوز این اتفاق نیفتاده است.
کتاب Hands-On Design Patterns with C++ اهداف کمتر جاه طلبانه اما بسیار کاربردی دارد. در این کتاب، ما بر روی الگوهای طراحی تمرکز میکنیم که در آن C++ چیزی ضروری برای اضافه کردن حداقل به یکی از دو طرف الگو دارد. از یک طرف، ما الگوهایی مانند Visitor را داریم که در آن قابلیتهای برنامهنویسی عمومی C++ اجازه راهحل بهتر را میدهد. این راه حل بهتر با ویژگیهای جدیدی که با تکامل زبان از C++11 به C++17 اضافه شد، امکانپذیر شد.
از سوی دیگر، برنامهنویسی عمومی همچنان برنامهنویسی است (فقط اجرای برنامه در زمان کامپایل اتفاق میافتد). برنامهنویسی نیاز به طراحی دارد و طراحی دارای چالشهای مشترکی است که بی شباهت به چالشهای برنامهنویسی سنتی نیست.
بنابراین، بسیاری از الگوهای سنتی دوقلوها یا حداقل خواهر و برادرهای نزدیک خود را در برنامهنویسی عمومی دارند، و ما در این کتاب عمدتاً بر روی این الگوها تمرکز میکنیم. یک مثال بارز الگوی استراتژی است که در جامعه برنامهنویسی عمومی با نام جایگزین آن، الگوی سیاست، شناخته شده است.
همچنین، با اضافه شدن ویژگیهای جدید به زبان، میتواند راهحلهایی برای مسائل جدید یا راهحلهای جدید برای مشکلات قدیمی ارائه دهد و هر دوی اینها در نهایت به الگوهای طراحی تبدیل میشوند. این مورد در مورد کوروتینهای C++ است که در فصل آخر ظاهر میشوند.
در نهایت، زبانی به پیچیدگی C++ ملزم به داشتن چند ویژگی خاص خود است که اغلب منجر به چالشهای خاص C++ میشود که راهحلهای مشترک یا استاندارد دارند. در حالی که کاملاً شایسته نام الگو نیستند، این اصطلاحات خاص C++ نیز در این کتاب پوشش داده شده است.
چند کلمه در مورد تغییرات ویرایش دوم: اول از همه، فصل جدیدی در مورد الگوهای همزمان وجود دارد. همه نمونهها بهروزرسانی میشوند تا از C++17 یا C++20 هرجا که منطقی باشد، استفاده کنند، اما هرگز بهصورت رایگان. بسیاری از الگوها، اصطلاحات و نمونههایی که کاربرد آنها را نشان میدهند با پیشرفتها و پیشرفتهای اخیر بهروزرسانی شدند – نتیجه کار جامعه برنامهنویسی C++ در چند سال اخیر.
تمام آنچه گفته شد، سه دلیل اصلی برای نگارش این کتاب وجود دارد:
- برای پوشش راهحلهای خاص C++ برای الگوهای طراحی کلاسیک و کلی
- برای نشان دادن انواع الگوی خاص C++ که در زمان بروز چالشهای طراحی قدیمی در حوزه جدید برنامهنویسی عمومی رخ میدهد.
- برای به روز نگه داشتن الگوهای خود با تکامل زبان
کتاب Hands-On Design Patterns with C++ برای چه کسی است؟
این کتاب برای برنامهنویسان ++C در نظر گرفته شده است که میخواهند از خرد جامعه بیاموزند – از راه حلهای خوب شناخته شده تا مشکلات طراحی که اغلب رخ میدهند. روش دیگر این است که این کتاب راهی برای یک برنامهنویس است تا از اشتباهات دیگران درس بگیرد.
کتاب Hands-On Design Patterns with C++ یادگیری C++ نیست. مخاطبان هدف اکثرا برنامهنویسانی هستند که به طور منطقی با ابزارها و نحو زبان آشنا هستند و بیشتر علاقه مند به یادگیری نحوه و چرایی استفاده از این ابزارها هستند.
با این حال، کتاب Hands-On Design Patterns with C++ برای برنامهنویسانی که میخواهند بیشتر در مورد C++ بیاموزند نیز مفید خواهد بود، اما آرزو میکنند که مطالعه آنها با مثالهای عینی و عملی هدایت شود (برای چنین برنامهنویسانی توصیه میکنیم یک کتاب مرجع C++ را نیز در دسترس داشته باشند). در نهایت، برنامهنویسانی که میخواهند نه تنها چیزهای جدید در C++17 یا C++20 را بیاموزند، بلکه میخواهند همه این ویژگیهای جدید را برای چه مواردی مورد استفاده قرار دهند، امیدواریم این کتاب را نیز روشنکننده بدانند.
آنچه کتاب Hands-On Design Patterns with C++ پوشش میدهد:
فصل 1، مقدمه ای بر وراثت و چند شکلی، مروری کوتاه بر ویژگیهای شیگرا C++ ارائه می دهد. این فصل به عنوان مرجعی برای برنامهنویسی شیگرا در C++ در نظر گرفته نشده است، بلکه جنبههایی از آن را که برای فصلهای بعدی مهم هستند برجسته میکند.
فصل 2 کتاب Hands-On Design Patterns with C++، الگوهای کلاس و تابع، یک نمای کلی از امکانات برنامهنویسی عمومی C++ ارائه میکند – قالبهای کلاس، قالبهای تابع، و عبارات لامبدا. این فصل نمونهها و تخصصهای الگو را به همراه کسر آرگومان تابع الگو و وضوح اضافه بار پوشش می دهد و شما را برای استفادههای پیچیده تر از الگوها در فصلهای بعدی آماده میکند.
فصل 3 کتاب Hands-On Design Patterns with C++، حافظه و مالکیت، روشهای اصطلاحی مدرن برای بیان انواع مختلف مالکیت حافظه در C++ را شرح میدهد. این مجموعه ای از قراردادها یا اصطلاحات است – کامپایلر این قوانین را اجرا نمیکند، اما برنامهنویسان اگر از واژگان اصطلاحی مشترک استفاده کنند، درک یکدیگر را آسان تر خواهند کرد.
فصل 4 کتاب Hands-On Design Patterns with C++، مبادله – از ساده به ظریف، یکی از اساسی ترین عملیات C++، مبادله، یا مبادله دو مقدار را بررسی میکند. این عملیات به طرز شگفتانگیزی تعاملات پیچیدهای با سایر ویژگیهای C++ دارد که در این فصل مورد بحث قرار گرفته است.
فصل 5 کتاب Hands-On Design Patterns with C++، نگاهی جامع به RAII، یکی از مفاهیم بنیادی C++، یعنی مدیریت منابع را به تفصیل بررسی میکند و آنچه را که ممکن است محبوبترین اصطلاح C++، RAII باشد، معرفی میکند که رویکرد استاندارد C++ برای مدیریت منابع است.
فصل 6 کتاب Hands-On Design Patterns with C++، درک نوع پاک کردن، بینشی را در مورد یک تکنیک C++ ارائه میدهد که برای مدت طولانی در C++ در دسترس بوده است اما از زمان معرفی C++11 محبوبیت و اهمیت آن افزایش یافته است. پاک کردن نوع به برنامهنویس اجازه میدهد تا برنامههای انتزاعی بنویسد که به صراحت به انواع خاصی اشاره نمیکنند.
فصل 7، SFINAE، مفاهیم و مدیریت رزولوشن اضافه بار، SFINAE را مورد بحث قرار میدهد – یک اصطلاح C++ که از یک طرف برای استفاده از قالبها در C++ ضروری است و به طور شفاف اتفاق میافتد، در حالی که از طرف دیگر، نیاز به یک اصطلاح بسیار کامل و کامل دارد. درک ظریف از قالبهای ++C در صورت استفاده هدفمند.
فصل 8 کتاب Hands-On Design Patterns with C++، الگوی الگوی تکرارشونده عجیب، یک الگوی مبتنی بر قالب را توصیف میکند که مزایای برنامهنویسی شیگرا را با انعطافپذیری قالبها ترکیب میکند. این فصل الگو را توضیح می دهد و به شما می آموزد که چگونه از آن برای حل مسائل عملی به درستی استفاده کنید. در نهایت، این فصل شما را برای شناخت این الگو در فصلهای بعدی آماده میکند.
فصل 9، آرگومانهای نامگذاری شده، زنجیرهسازی روش، و الگوی سازنده، یک تکنیک غیرمعمول برای فراخوانی توابع در C++ را پوشش میدهد که از آرگومانهای نامگذاری شده به جای آرگومانهای موقعیتی استفاده میکند. این یکی دیگر از اصطلاحاتی است که به طور ضمنی در هر برنامه ++C استفاده می کنیم، اما استفاده صریح و هدفمند آن کمی فکر میکند.
فصل 10 کتاب Hands-On Design Patterns with C++، بهینه سازی بافر محلی، تنها فصل صرفاً عملکرد محور در این کتاب است. عملکرد و کارایی ملاحظات مهمی هستند که بر هر تصمیم طراحی که بر خود زبان تأثیر میگذارد تأثیر میگذارد – هیچ ویژگی در زبان وجود ندارد که از نقطه نظر کارایی قبل از پذیرش در استاندارد بررسی نشده باشد. عادلانه است که یک فصل به یک اصطلاح رایج که برای بهبود عملکرد برنامههای C++ استفاده میشود اختصاص داده شود.
فصل 11، ScopeGuard، یک الگوی قدیمی C++ را معرفی میکند که تقریباً با نسخههای اخیر C++ غیرقابل تشخیص تغییر کرده است. در این فصل الگویی برای نوشتن آسان کدهای ایمن استثنایی یا به طور کلی تر کدهای ایمن در برابر خطا در C++ به شما آموزش داده میشود.
فصل 12 کتاب Hands-On Design Patterns with C++، الگوی Friend Factory، یک الگوی قدیمی دیگری را شرح میدهد که در C++ مدرن کاربردهای جدیدی پیدا میکند. این الگو برای تولید توابع مرتبط با الگوها، مانند عملگرهای حسابی برای هر نوع تولید شده توسط یک الگو، استفاده میشود.
فصل 13 کتاب Hands-On Design Patterns with C++، سازندگان و کارخانههای مجازی، یکی دیگر از الگوهای کلاسیک برنامهنویسی شیگرا را که در C++ اعمال میشود، یعنی الگوی کارخانه، پوشش میدهد. در این فرآیند، این فصل همچنین به شما نشان میدهد که چگونه میتوانید ظاهر رفتار چندشکلی را از سازندههای C++ دریافت کنید، حتی اگر سازندهها نمیتوانند مجازی باشند.
فصل 14 کتاب Hands-On Design Patterns with C++، الگوی روش الگو و اصطلاح غیر مجازی، متقاطع جالبی را بین یک الگوی کلاسیک شیگرا، الگو، و یک اصطلاح بسیار C++-مرکز توصیف میکند. آنها با هم الگویی را تشکیل می دهند که استفاده بهینه از توابع مجازی در C++ را توصیف میکند.
فصل 15 کتاب Hands-On Design Patterns with C++، طراحی مبتنی بر سیاست، یکی از جواهرات الگوهای طراحی C++ را پوشش میدهد، الگوی Policy (که بیشتر به عنوان الگوی استراتژی شناخته میشود)، که در زمان کامپایل اعمال میشود، یعنی بهعنوان یک الگوی برنامهنویسی عمومی به جای یک شیگرا. الگو.
فصل 16 کتاب Hands-On Design Patterns with C++، آداپتورها و دکوراتورها، دو الگوی بسیار گسترده و نزدیک به هم را که در C++ اعمال میشوند، مورد بحث قرار میدهد. این فصل استفاده از این الگوها را در طراحیهای شیگرا و همچنین در برنامههای عمومی در نظر میگیرد.
فصل 17 کتاب Hands-On Design Patterns with C++، الگوی بازدیدکننده و ارسال چندگانه، گالری الگوهای برنامهنویسی شیگرا کلاسیک ما را با الگوی همیشه محبوب بازدیدکننده کامل میکند. این فصل خود الگو را توضیح میدهد، سپس بر روشهایی تمرکز میکند که C++ مدرن، اجرای Visitor را سادهتر، قویتر و کمتر مستعد خطا میکند.
فصل 18 کتاب Hands-On Design Patterns with C++، الگوهایی برای همزمانی، افزوده جدیدی به کتاب است. در حالی که C++ مدتها قبل از اینکه C++11 ابزارهای رسمی را در اختیار ما قرار دهد برای نوشتن برنامههای همزمان مورد استفاده قرار گرفته است، طیف وسیع راه حلهای خاص مشکل، شناسایی الگوهای رایج را دشوار میکند. این فصل به معرفی الگوهایی میپردازد که به بلوکهای اصلی برای طراحی نرمافزار همزمان در C++ تبدیل شدند.
سرفصلهای کتاب Hands-On Design Patterns with C++:
- Hands-On Design Patterns with C++
- Contributors
- About the author
- About the reviewer
- Preface
- Part 1: Getting Started with C++ Features and Concepts
- Chapter 1: An Introduction to Inheritance and Polymorphism
- Chapter 2: Class and Function Templates
- Chapter 3: Memory and Ownership
- Part 2: Common C++ Idioms
- Chapter 4: Swap – from Simple to Subtle
- Chapter 5: A Comprehensive Look at RAII
- Chapter 6: Understanding Type Erasure
- Chapter 7: SFINAE, Concepts, and Overload Resolution Management
- Part 3: C++ Design Patterns
- Chapter 8: The Curiously Recurring Template Pattern
- Chapter 9: Named Arguments, Method Chaining, and the Builder Pattern
- Chapter 10: Local Buffer Optimization
- Chapter 11: ScopeGuard
- Chapter 12: Friend Factory
- Chapter 13: Virtual Constructors and Factories
- Chapter 14: The Template Method Pattern and the Non-Virtual Idiom
- Part 4: Advanced C++ Design Patterns
- Chapter 15: Policy-Based Design
- Chapter 16: Adapters and Decorators
- Chapter 17: The Visitor Pattern and Multiple Dispatch
- Chapter 18: Patterns for Concurrency
- Assessments
- Index
- Other Books You May Enjoy
جهت دانلود کتاب Hands-On Design Patterns with C++ میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.