Mô tả

Course Overview

This course provides a comprehensive overview of Design Patterns in Modern C++ from a practical perspective. This course in particular covers patterns with the use of:

  • The latest versions of the C++ programming language
  • Use of modern programming approaches: dependency injection, use of coroutines, and more!
  • Use of modern developer tools such as CLion and ReSharper C++
  • Discussions of pattern variations and alternative approaches

This course provides an overview of all the Gang of Four (GoF) design patterns as outlined in their seminal book, together with modern-day variations, adjustments, discussions of intrinsic use of patterns in the language.

What are Design Patterns?

Design Patterns are reusable solutions to common programming problems. They were popularized with the 1994 book Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, John Vlissides, Ralph Johnson and Richard Helm (who are commonly known as a Gang of Four, hence the GoF acronym).

The original book was written using C++ and Smalltalk as examples, but since then, design patterns have been adapted to every programming language imaginable: Swift, C#, Java, PHP and even programming languages that aren't strictly object-oriented, such as JavaScript.

The appeal of design patterns is immortal: we see them in libraries, some of them are intrinsic in programming languages, and you probably use them on a daily basis even if you don't realize they are there.

What Patterns Does This Course Cover?

This course covers all the GoF design patterns. In fact, here's the full list of what is covered:

  • SOLID Design Principles: Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle and Dependency Inversion Principle
  • Creational Design Patterns: Builder, Factories (Factory Method and Abstract Factory), Prototype and Singleton
  • Structrural Design Patterns: Adapter, Bridge, Composite, Decorator, Façade, Flyweight and Proxy
  • Behavioral Design Patterns: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Null Object, Observer, State, Strategy, Template Method and Visitor

Who Is the Course For?

This course is for C++ developers who want to see not just textbook examples of design patterns, but also the different variations and tricks that can be applied to implement design patterns in a modern way.

Presentation Style

This course is presented as a (very large) series of live demonstrations being done in JetBrains CLion. Most demos are single-file, so you can download the file attached to the lesson and run it in CLion, XCode or another IDE of your choice (or just on the command line).

This course does not use UML class diagrams; all of demos are live coding.

Bạn sẽ học được gì

Yêu cầu

Nội dung khoá học

25 sections

Introduction

1 lectures
Introduction
05:38

SOLID Design Principles

7 lectures
Overview
00:52
Single Responsibility Principle
06:48
Open-Closed Principle
14:51
Liskov Substitution Principle
07:17
Interface Segregation Principle
06:33
Dependency Inversion Principle
13:21
Summary
02:26

Builder

9 lectures
Gamma Categorization
03:36
Overview
01:43
Life Without Builders
03:50
Builder
06:40
Fluent Builder
09:02
Groovy-Style Builder
08:12
Builder Facets
14:55
Builder Coding Exercise
1 question
Summary
00:57

Factories

9 lectures
Overview
03:20
Point Example
04:05
Factory Method
04:00
Factory
03:59
Inner Factory
04:02
Abstract Factory
12:25
Functional Factory
03:46
Factory Coding Exercise
1 question
Summary
01:15

Prototype

7 lectures
Overview
01:59
Record Keeping
06:33
Prototype
05:02
Prototype Factory
07:09
Prototype via Serialization
11:33
Prototype Coding Exercise
1 question
Summary
01:08

Singleton

9 lectures
Overview
02:43
Singleton Implementation
06:52
Testability Issues
05:04
Singleton in Dependency Injection
06:24
Singleton Lifetime in DI Container
05:40
Monostate
02:49
Multiton
08:36
Singleton Coding Exercise
1 question
Summary
01:50

Adapter

5 lectures
Overview
02:36
Vector/Raster Demo
09:12
Adapter Caching
07:14
Adapter Coding Exercise
1 question
Summary
01:10

Bridge

6 lectures
Overview
01:46
Pimpl Idiom
08:54
Shrink-Wrapped Pimpl
07:35
Bridge Implementation
08:22
Bridge Coding Exercise
1 question
Summary
00:21

Composite

6 lectures
Overview
01:53
Geometric Shapes
04:34
Neural Networks
15:19
Array-Backed Properties
09:37
Composite Coding Exercise
1 question
Summary
02:02

Decorator

6 lectures
Overview
01:46
Dynamic Decorator
09:32
Static Decorator
12:10
Functional Decorator
11:18
Decorator Coding Exercise
1 question
Summary
01:07

Façade

3 lectures
Overview
03:08
Façade
08:42
Summary
01:25

Flyweight

6 lectures
Overview
02:21
Handmade Flyweight
09:34
Boost.Flyweight
03:34
Text Formatting
11:04
Flyweight Coding Exercise
1 question
Summary
00:42

Proxy

8 lectures
Overview
02:07
Smart Pointers
03:32
Property Proxy
04:55
Virtual Proxy
04:46
Communication Proxy
05:47
Proxy vs Decorator
01:18
Proxy Coding Exercise
1 question
Summary
00:46

Chain of Responsibility

5 lectures
Overview
03:33
Pointer Chain
11:13
Broker Chain
12:22
Chain of Responsibility Coding Exercise
1 question
Summary
02:03

Command

6 lectures
Overview
05:28
Command
06:42
Undo Operations
05:39
Composite Command (Macro)
10:53
Command Coding Exercise
1 question
Summary
01:09

Interpreter

6 lectures
Overview
04:14
Handmade Interpreter: Lexing
08:05
Handmade Interpreter: Parsing
12:23
Building Parsers with Boost.Spirit
09:40
Interpreter Coding Exercise
1 question
Summary
01:16

Iterator

7 lectures
Overview
01:37
Iterators in the Standard Library
11:09
Binary Tree Iterator
13:46
Tree Iterator with Coroutines
05:51
Boost Iterator Façade
05:38
Iterator Coding Exercise
1 question
Summary
01:39

Mediator

5 lectures
Overview
01:13
Chat Room
16:37
Event Broker
08:18
Mediator Coding Exercise
1 question
Summary
01:16

Memento

6 lectures
Overview
01:41
Memento
06:16
Undo and Redo
10:15
Automatic Memento
05:49
Memento Coding Exercise
1 question
Summary
01:44

Observer

8 lectures
Overview
02:20
Observer
04:14
Observable
07:01
Observable with Boost.Signals
04:55
The Problem of Dependencies
04:37
Thread Safety and Reentrancy
09:57
Observer Coding Exercise
1 question
Summary
01:35

State

6 lectures
Overview
03:08
Classic State Implementation
09:10
Handmade State Machine
08:47
State Machine with Boost.MSM
11:59
State Coding Exercise
1 question
Summary
01:52

Strategy

5 lectures
Overview
01:50
Dynamic Strategy
09:23
Static Strategy
02:11
Strategy Coding Exercise
1 question
Summary
00:26

Template Method

4 lectures
Overview
01:29
Template Method
06:33
Template Method Coding Exercise
1 question
Summary
00:31

Visitor

9 lectures
Overview
03:18
Intrusive Visitor
07:30
Reflective Visitor
06:47
Classic Visitor (Double Dispatch)
16:58
Acyclic Visitor
13:19
Multimethods
12:19
Variant and std::visit
08:38
Visitor Coding Exercise
1 question
Summary
01:20

Course Summary

1 lectures
End of Course
01:01

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.