WEBVTT 00:08.690 --> 00:09.340 Hi. 00:09.500 --> 00:11.030 Welcome to the video course. 00:11.090 --> 00:14.410 Go behavioral patterns by Mario Castro. 00:14.410 --> 00:18.300 CONTRERAS A video caused by pact publishing. 00:18.300 --> 00:22.950 I am Alister Ruane and I will be Mario's voice for this course. 00:23.000 --> 00:29.270 Mario Castro Contreras is a software engineer who is specialized in distributed systems and big data 00:29.270 --> 00:30.410 solutions. 00:30.410 --> 00:36.650 He works as a site reliability engineer and now he is focused on containerized solutions and apps using 00:36.650 --> 00:40.800 most of the Google Cloud Suite especially Cuban netters. 00:40.940 --> 00:46.460 He has wide experience in systems and solutions integration and has written many scalable and reliable 00:46.550 --> 00:49.590 12 factor apps using go and docker. 00:49.640 --> 00:54.920 He has designed Big Data architectures for financial services and the media and he has written data 00:54.920 --> 01:00.440 processing pipelines using event driven architectures entirely in go. 01:00.440 --> 01:05.540 He is also very active in the open source community and you can find him on his get hub account with 01:05.540 --> 01:07.320 the username Sidon. 01:07.580 --> 01:12.910 In the past he has also written mobile applications and back ends in Java. 01:12.950 --> 01:19.100 Mario is passionate about programming languages and he finds the best balance between fun and productivity 01:19.160 --> 01:20.260 in go. 01:20.270 --> 01:25.350 However recently he enjoys writing in rust and embedded systems in sea. 01:25.350 --> 01:29.690 He is also passionate about road cycling and winter sports. 01:29.690 --> 01:31.470 Now let's look at our course. 01:31.550 --> 01:32.300 Cool. 01:32.300 --> 01:38.780 So now let's talk about go go is a multi paradigm programming language that has built in facilities 01:38.780 --> 01:44.630 to create concurrent applications design patterns allow developers to efficiently address common problems 01:44.630 --> 01:50.840 faced while developing applications go design patterns will provide you with a reference point for software 01:50.840 --> 01:57.020 design patterns and help to build applications in a more idiomatic robust and convenient way. 01:57.080 --> 02:02.370 In go in this course we will focus on the behavioral patterns and go. 02:02.390 --> 02:08.180 In other words we will learn to encapsulate behaviors for example algorithms in the strategy pattern 02:08.390 --> 02:11.780 or executions in the Command pattern correct behavior. 02:11.780 --> 02:18.530 Design is the last step after knowing how to deal with object creation and structures defining the behavior 02:18.530 --> 02:24.410 correctly is the last step of good software design because all in all good software design lets us improve 02:24.410 --> 02:31.190 algorithms and fix errors easily while the best algorithm implementation will not save us from bad software 02:31.190 --> 02:32.260 design. 02:32.460 --> 02:34.770 It is divided into three sections. 02:34.940 --> 02:41.300 So our first section deals with the first behavioral pattern to make objects react in unexpected or 02:41.300 --> 02:42.560 bounded way. 02:42.650 --> 02:48.590 We'll start with the strategy pattern perhaps the most important design pattern in object oriented programming. 02:48.680 --> 02:54.110 As many design patterns have something in common with it then we'll move to the chain of responsibility 02:54.230 --> 03:00.140 to build chains of objects that can decide which between them must deal with a particular case. 03:00.140 --> 03:06.200 Finally Command pattern to encapsulate actions that don't necessarily need to be executed immediately 03:06.400 --> 03:08.420 or must be stored. 03:08.420 --> 03:14.000 Then we will move on to the second section which continues with behavioral patterns introducing the 03:14.000 --> 03:20.070 interpreter pattern a quite complex pattern to create small languages and interpreters for them. 03:20.150 --> 03:27.290 The momento pattern is in front of our eyes every day with the undo button in apps the template pattern 03:27.290 --> 03:33.080 helps developers by defining an initial structure of an operation so that the final users of the code 03:33.080 --> 03:34.570 can finish it. 03:34.700 --> 03:41.150 Then we will end this video with the third and last section which depicts the observer pattern an important 03:41.150 --> 03:46.850 pattern that is becoming tremendously popular in distributed systems and reactive programming. 03:46.970 --> 03:52.130 The visitor pattern deals with complex hierarchies of objects where you need to apply a particular action 03:52.130 --> 03:54.040 depending on the object. 03:54.050 --> 04:00.260 Finally the state pattern which is commonly used in video games and finite state machines and allows 04:00.260 --> 04:04.520 an object to change its behavior depending on its own state. 04:04.520 --> 04:06.410 Sounds great isn't it. 04:06.500 --> 04:11.270 By the end of this course you will have an advanced knowledge of Go design patterns. 04:11.270 --> 04:15.610 You will be well equipped with the implementations of most go design patterns. 04:15.620 --> 04:20.800 Also you will be able to use the concepts learned here in your application development. 04:20.810 --> 04:26.660 This course will enable you to understand and apply design patterns in an idiomatic way to produce concise 04:26.930 --> 04:30.040 readable and maintainable software. 04:30.110 --> 04:34.970 All you need to follow through the examples in this course is a computer running any recent version 04:35.000 --> 04:36.020 of go. 04:36.080 --> 04:39.360 While the examples all use go one point seven. 04:39.500 --> 04:41.960 Knowledge of design patterns is optional. 04:41.960 --> 04:45.560 You are expected to have basic knowledge of programming. 04:45.800 --> 04:47.980 So let's get started right away. 04:47.990 --> 04:51.530 I'm sure you'll be amazed after exploring this wonderful language. 04:51.530 --> 04:52.640 See you there.