Podcast
Questions and Answers
Qual é o princípio que afirma que módulos de alto nível não devem depender de módulos de baixo nível, mas ambos devem depender de abstrações?
Qual é o princípio que afirma que módulos de alto nível não devem depender de módulos de baixo nível, mas ambos devem depender de abstrações?
Qual padrão comportamental permite que um objeto altere seu comportamento com base em seu estado interno?
Qual padrão comportamental permite que um objeto altere seu comportamento com base em seu estado interno?
Qual padrão define uma dependência de um para muitos entre objetos, de forma que a mudança de estado de um objeto notifica automaticamente seus dependentes?
Qual padrão define uma dependência de um para muitos entre objetos, de forma que a mudança de estado de um objeto notifica automaticamente seus dependentes?
O que é encapsulado pelo padrão Comando em um objeto?
O que é encapsulado pelo padrão Comando em um objeto?
Signup and view all the answers
Qual dos seguintes padrões de comportamento permite que algoritmos variem independentemente dos clientes que os utilizam?
Qual dos seguintes padrões de comportamento permite que algoritmos variem independentemente dos clientes que os utilizam?
Signup and view all the answers
Qual padrão de criação é utilizado para assegurar que uma classe tenha apenas uma instância?
Qual padrão de criação é utilizado para assegurar que uma classe tenha apenas uma instância?
Signup and view all the answers
Qual é o objetivo principal do padrão Adapter?
Qual é o objetivo principal do padrão Adapter?
Signup and view all the answers
Qual princípio SOLID afirma que uma classe deve ter apenas uma razão para mudar?
Qual princípio SOLID afirma que uma classe deve ter apenas uma razão para mudar?
Signup and view all the answers
Qual padrão estrutural permite que você adicione funcionalidade a um objeto sem alterar sua estrutura?
Qual padrão estrutural permite que você adicione funcionalidade a um objeto sem alterar sua estrutura?
Signup and view all the answers
Qual dos padrões de criação permite a criação de grupos de objetos relacionados sem especificar suas classes concretas?
Qual dos padrões de criação permite a criação de grupos de objetos relacionados sem especificar suas classes concretas?
Signup and view all the answers
Qual princípio SOLID indica que os objetos de uma superclasse devem ser substituíveis por objetos de uma subclasse?
Qual princípio SOLID indica que os objetos de uma superclasse devem ser substituíveis por objetos de uma subclasse?
Signup and view all the answers
Qual padrão estrutural organiza objetos em estruturas de árvore para representar hierarquias de parte-todo?
Qual padrão estrutural organiza objetos em estruturas de árvore para representar hierarquias de parte-todo?
Signup and view all the answers
Qual princípio SOLID sugere que entidades de software devem ser abertas para extensão, mas fechadas para modificação?
Qual princípio SOLID sugere que entidades de software devem ser abertas para extensão, mas fechadas para modificação?
Signup and view all the answers
Study Notes
Design Patterns
Creational Patterns
- Purpose: Focus on object creation mechanisms to create objects in a controlled manner.
-
Key Patterns:
- Singleton: Ensures a class has only one instance and provides a global point of access to it.
- Factory Method: Defines an interface for creating an object but lets subclasses alter the type of created objects.
- Abstract Factory: Provides an interface for creating families of related or dependent objects without specifying their concrete classes.
- Builder: Separates the construction of a complex object from its representation, allowing the same construction process to create different representations.
- Prototype: Creates new objects by copying an existing object, known as the prototype.
Structural Patterns
- Purpose: Deal with object composition to form larger structures and ensure they work together.
-
Key Patterns:
- Adapter: Allows incompatible interfaces to work together by converting the interface of a class into another interface clients expect.
- Decorator: Adds new functionality to an existing object without altering its structure.
- Facade: Provides a simplified interface to a complex subsystem, making it easier to use.
- Bridge: Decouples an abstraction from its implementation, allowing the two to vary independently.
- Composite: Composes objects into tree structures to represent part-whole hierarchies, allowing clients to treat individual objects and compositions uniformly.
SOLID Principles
- Purpose: Set of five principles aimed at improving software design, promoting maintainability and scalability.
-
Principles:
- Single Responsibility Principle (SRP): A class should have one and only one reason to change, meaning it should only have one job or responsibility.
- Open/Closed Principle (OCP): Software entities should be open for extension but closed for modification, allowing behavior to be extended without altering existing code.
- Liskov Substitution Principle (LSP): Objects of a superclass should be replaceable with objects of a subclass without affecting the correct functioning of the program.
- Interface Segregation Principle (ISP): Clients should not be forced to depend on interfaces they do not use, promoting smaller, more specific interfaces.
- Dependency Inversion Principle (DIP): High-level modules should not depend on low-level modules; both should depend on abstractions, reducing coupling between components.
Behavioral Patterns
- Purpose: Concerned with algorithms and the assignment of responsibilities between objects.
-
Key Patterns:
- Chain of Responsibility: Passes a request along a chain of handlers, allowing multiple objects to handle the request without the sender needing to be coupled to the handler.
- Observer: Defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
- Strategy: Defines a family of algorithms, encapsulates each one, and makes them interchangeable, allowing algorithms to vary independently from clients that use them.
- Command: Encapsulates a request as an object, thereby allowing for parameterization of clients with queues, requests, and operations.
- State: Allows an object to alter its behavior when its internal state changes, appearing to change its class.
Padrões de Projeto
- Objetivo: Fornecer soluções reutilizáveis para problemas comuns de design de software, promovendo flexibilidade, manutenabilidade e extensibilidade.
Padrões de Criação
- Objetivo: Concentrar-se em mecanismos de criação de objetos, controlando o processo de instanciação.
Padrões-chave de criação:
- Singleton: Garante que uma classe tenha apenas uma instância e fornece um ponto de acesso global a ela.
- Método de Fábrica: Define uma interface para a criação de um objeto, mas permite que subclasses alterem o tipo de objetos criados.
- Fábrica Abstrata: Fornece uma interface para a criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
- Construtor: Separa a construção de um objeto complexo de sua representação, permitindo que o mesmo processo de construção crie diferentes representações.
- Protótipo: Cria novos objetos copiando um objeto existente, conhecido como protótipo.
Padrões Estruturais
- Objetivo: Lidar com a composição de objetos para formar estruturas maiores e garantir que elas funcionem juntas.
Padrões-chave estruturais:
- Adaptador: Permite que interfaces incompatíveis trabalhem juntas convertendo a interface de uma classe em outra interface esperada pelos clientes.
- Decorador: Adiciona novas funcionalidades a um objeto existente sem alterar sua estrutura.
- Fachada: Fornece uma interface simplificada para um subsistema complexo, tornando-o mais fácil de usar.
- Ponte: Desacopla uma abstração de sua implementação, permitindo que ambas variem independentemente.
- Composto: Compõe objetos em estruturas de árvore para representar hierarquias de parte-todo, permitindo que clientes tratem objetos individuais e composições uniformemente.
Princípios SOLID
- Objetivo: Conjunto de cinco princípios que visam melhorar o design de software, promovendo manutenabilidade e escalabilidade.
Princípios SOLID:
- Princípio da Responsabilidade Única (SRP): Uma classe deve ter apenas uma e única razão para mudar, ou seja, deve ter apenas uma função ou responsabilidade.
- Princípio Aberto/Fechado (OCP): Entidades de software devem ser abertas para extensão, mas fechadas para modificação, permitindo que o comportamento seja estendido sem alterar o código existente.
- Princípio da Substituição de Liskov (LSP): Objetos de uma superclasse devem ser substituíveis por objetos de uma subclasse sem afetar o funcionamento correto do programa.
- Princípio da Segregação de Interface (ISP): Os clientes não devem ser forçados a depender de interfaces que não usam, promovendo interfaces menores e mais específicas.
- Princípio da Inversão de Dependência (DIP): Módulos de alto nível não devem depender de módulos de baixo nível; ambos devem depender de abstrações, reduzindo o acoplamento entre componentes.
Padrões Comportamentais
- Objetivo: Preocupar-se com algoritmos e a atribuição de responsabilidades entre objetos.
Padrões-chave comportamentais:
- Cadeia de Responsabilidade: Passa uma solicitação ao longo de uma cadeia de manipuladores, permitindo que vários objetos manipulem a solicitação sem que o remetente seja acoplado ao manipulador.
- Observador: Define uma dependência de um para muitos entre objetos, de modo que, quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente.
- Estratégia: Define uma família de algoritmos, encapsula cada um e os torna intercambiáveis, permitindo que os algoritmos variem independentemente dos clientes que os utilizam.
- Comando: Encapsula uma solicitação como um objeto, permitindo assim a parametrização de clientes com filas, solicitações e operações.
- Estado: Permite que um objeto altere seu comportamento quando seu estado interno muda, aparecendo para mudar sua classe.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Teste seus conhecimentos sobre Padrões de Design, focando nos padrões creacionais e estruturais. Aprenda sobre Singleton, Factory Method, e Adapter, entre outros, e como eles ajudam na criação e composição de objetos em projetos de software.