Menu
Coddy logo textTech

Introdução aos Padrões de Projeto

Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 51 de 70.

Padrões de projeto são soluções comprovadas para problemas comuns que os desenvolvedores encontram repetidamente ao construir software. Em vez de reinventar a roda a cada vez, os padrões nos dão um vocabulário compartilhado e abordagens testadas para estruturar o código.

Pense em padrões de projeto como plantas. Eles não fornecem o código exato para copiar, mas descrevem como organizar classes e objetos para resolver desafios específicos. Quando alguém menciona "use o padrão Factory aqui", desenvolvedores experientes entendem imediatamente a estrutura geral que está sendo proposta.

Padrões de projeto se dividem em três categorias principais:

CategoriaPropósitoExemplos
CriacionaisComo os objetos são criadosSingleton, Factory
EstruturaisComo os objetos são compostosAdapter, Decorator
ComportamentaisComo os objetos se comunicamObserver, Strategy

Os padrões que exploraremos baseiam-se diretamente nos conceitos de POO que você já aprendeu - interfaces, herança, polimorfismo e composição. Cada padrão aproveita esses fundamentos de maneiras específicas para alcançar flexibilidade, manutenibilidade ou reusabilidade.

Nas próximas lições, você implementará vários padrões essenciais, começando com Singleton, Factory, Observer e Strategy. Compreender esses padrões ajudará você a reconhecer soluções comuns em bases de código existentes e a tomar melhores decisões arquiteturais em seus próprios projetos.

challenge icon

Desafio

Fácil

Vamos construir um sistema simples de catálogo de padrões que organiza informações de padrões de projeto em vários arquivos. Isso ajudará você a entender como os padrões são categorizados enquanto pratica uma boa organização de código.

Você criará três arquivos para separar diferentes responsabilidades:

  • Pattern.cs: Defina uma classe Pattern no namespace Patterns que representa um único padrão de projeto. Cada padrão deve ter um Name, Category (Creational, Structural, ou Behavioral) e uma Description. Inclua um método GetSummary() que retorna uma string formatada: [{Category}] {Name}: {Description}
  • PatternCatalog.cs: Crie uma classe PatternCatalog no namespace Patterns que gerencia uma coleção de padrões. Seu catálogo deve ser capaz de adicionar padrões e ter um método GetPatternsByCategory(string category) que retorna uma lista de todos os padrões que correspondem a essa categoria. Também inclua um método GetAllSummaries() que retorna uma lista de strings de resumo para todos os padrões no catálogo.
  • Program.cs: Reúna tudo criando um catálogo e preenchendo-o com padrões baseados na entrada. Em seguida, exiba os padrões filtrados por categoria.

Você receberá as seguintes entradas:

  • Número de padrões a serem adicionados
  • Para cada padrão: três linhas contendo name, category e description
  • Uma categoria para filtrar

Após adicionar todos os padrões ao seu catálogo, imprima os resumos dos padrões que correspondem à categoria do filtro, um por linha. Se nenhum padrão corresponder, imprima No patterns found.

Por exemplo, se as entradas forem:

3
Singleton
Creational
Ensures only one instance exists
Observer
Behavioral
Notifies dependents of state changes
Factory
Creational
Creates objects without specifying exact class
Creational

A saída deve ser:

[Creational] Singleton: Ensures only one instance exists
[Creational] Factory: Creates objects without specifying exact class

Este desafio demonstra como organizar classes relacionadas em arquivos separados mantém sua base de código limpa e sustentável - um princípio que se torna ainda mais importante à medida que você implementa padrões de projeto reais nas próximas lições!

Folha de consulta

Padrões de projeto são soluções comprovadas para problemas comuns no desenvolvimento de software. Eles fornecem modelos para organizar classes e objetos, em vez de código exato para copiar.

Os padrões de projeto se dividem em três categorias principais:

CategoriaPropósitoExemplos
CriacionaisComo os objetos são criadosSingleton, Factory
EstruturaisComo os objetos são compostosAdapter, Decorator
ComportamentaisComo os objetos se comunicamObserver, Strategy

Os padrões de projeto baseiam-se em conceitos de POO como interfaces, herança, polimorfismo e composição para alcançar flexibilidade, manutenibilidade e reusabilidade.

Experimente você mesmo

using System;
using System.Collections.Generic;
using Patterns;

class Program
{
    public static void Main(string[] args)
    {
        // Lê o número de padrões
        int n = Convert.ToInt32(Console.ReadLine());
        
        // Cria um novo PatternCatalog
        PatternCatalog catalog = new PatternCatalog();
        
        // TODO: Lê os detalhes de cada padrão (name, category, description)
        // e adiciona-os ao catálogo
        for (int i = 0; i < n; i++)
        {
            string name = Console.ReadLine();
            string category = Console.ReadLine();
            string description = Console.ReadLine();
            
            // TODO: Cria um Pattern e adiciona-o ao catálogo
        }
        
        // Lê a categoria pela qual filtrar
        string filterCategory = Console.ReadLine();
        
        // TODO: Obtém os padrões pela categoria de filtro
        // e imprime seus resumos
        // Se nenhum padrão corresponder, imprime "No patterns found"
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos