πŸŽ‰ 75% of content is free forever β€” Unlock Premium from $10/mo β†’
CW
Search courses…
πŸ’Ό Servicesℹ️ Aboutβœ‰οΈ ContactView Pricing Plansfrom $10

Advanced Design Patterns

Python Patterns🟒 Free Lesson

Advertisement

Advanced Design Patterns

Repository, unit of work, and enterprise patterns.

Overview

Master enterprise design patterns.

Repository Pattern

from abc import ABC, abstractmethod

class UserRepository(ABC):
    @abstractmethod
    def find_by_id(self, user_id):
        pass
    
    @abstractmethod
    def find_by_email(self, email):
        pass
    
    @abstractmethod
    def save(self, user):
        pass

class SQLUserRepository(UserRepository):
    def __init__(self, session):
        self.session = session
    
    def find_by_id(self, user_id):
        return self.session.query(User).get(user_id)
    
    def find_by_email(self, email):
        return self.session.query(User).filter_by(email=email).first()
    
    def save(self, user):
        self.session.add(user)
        self.session.commit()

Unit of Work

class UnitOfWork:
    def __init__(self, session):
        self.session = session
        self.new_objects = []
        self.dirty_objects = []
        self.deleted_objects = []
    
    def register_new(self, obj):
        self.new_objects.append(obj)
    
    def register_dirty(self, obj):
        self.dirty_objects.append(obj)
    
    def register_deleted(self, obj):
        self.deleted_objects.append(obj)
    
    def commit(self):
        for obj in self.new_objects:
            self.session.add(obj)
        for obj in self.dirty_objects:
            self.session.merge(obj)
        for obj in self.deleted_objects:
            self.session.delete(obj)
        self.session.commit()

Practice

Implement a service layer using repository pattern.

⭐

Premium Content

Advanced Design Patterns

Unlock this lesson and 900+ advanced tutorials with a Premium plan.

🎯End-to-end Projects
πŸ’ΌInterview Prep
πŸ“œCertificates
🀝Community Access

Already a member? Log in

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement