Community Launch PE/DEV

Hello guys, it has been a long time since my last post, but I'm back to announce a really nice event here in my city (Recife, Brazil) in which I will be speaking about Design Patterns with C#. Because the topic is very well known, I will try to bring others topics to my talk, … Continue reading Community Launch PE/DEV

Singleton (Anti-) Pattern

I’ve implemented my first design patterns at college, while creating a web system during the software engineer course. My classmates and I needed a facade class with a single instance of it throughout the system. So, because we’re really smart, we’ve applied the Facade and Singleton pattern. Actually, we’ve implemented the patterns without knowledge of … Continue reading Singleton (Anti-) Pattern

Principles of Package Design

Agile Software Development is really an incredible book. After reading it, a lot had been talked about the Object-Oriented Principles on this blog (here and here). Today, I'll be talking about another section of the book, which introduces principles used to maintain high package cohesion and a desirable package dependency, known as Principles of Package Design. … Continue reading Principles of Package Design

Generic DAO with NHibernate and Autofac

Data access is one of the most important design decisions in software development. Depending on how you design your data access classes, every single modification causes cascading changes throughout your project. Imagine you have a lot of persistent data objects to manage and, for example, you have to change your database. This transition must be … Continue reading Generic DAO with NHibernate and Autofac

C# Extension Methods

I've been talking about Object-Oriented Principles for a while, and this post will not be different. Here and here, I've introduced OOP and described an elegant solution to comply with Open-Closed Principle using Visitor Pattern, respectively. Today I'll be talking about a C# 3.0 feature called extension methods. Maybe you're now asking what extension methods … Continue reading C# Extension Methods

Visitor Pattern and the Open-Closed Principle

A few weeks ago, I described here the Open-Closed Principle, which says that software entities should be open for extension, but closed for modification. Now, imagine you are facing with the following design problem: You need to add a new functionality to a hierarchy of classes, but the act of adding it will be painful … Continue reading Visitor Pattern and the Open-Closed Principle