Hello, In this article we're going to explore the Method Injection and Property Injection design patterns. To demonstrate the patterns I'm going to add a new interface named Encoder to the printer.py file and a concrete implementation for two encoders: Rot13Encoder and NullEncoder. class Encoder(metaclass=abc.ABCMeta): def encode(self, message: Message) -> Message: raise NotImplementedError("encode must be … Continue reading Method Injection and Property Injection Design Patterns
python
Constructor Injection and Null Object Design Patterns
The Constructor Injection design pattern is a pattern that helps you declare all the required dependencies of a class in it's constructor. This is useful because it helps you decouple the code, you can specify an interface instead of a concrete type, remember, program to an interface. Also, in the constructor it is easier to … Continue reading Constructor Injection and Null Object Design Patterns
Composition Root Pattern: How to Write Modular Software
The composition root is a design pattern which helps you structure a software application by implementing a class that builds all the other classes. In this example we will examine this pattern in Python. Here's the object graph of the classes that we're going to implement: I have designed a sample application that we're going … Continue reading Composition Root Pattern: How to Write Modular Software
Introduction to Pyenv for Linux Users
Hello, In this article I will introduce you to pyenv, a tool for managing python environments. Installing pyenv is pretty straight forward, you'll need to clone the repo and add the binaries to the path. For a typical Debian based distro using the Zsh shell the instructions would be: git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo 'export … Continue reading Introduction to Pyenv for Linux Users