Design Patterns

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

What is the main motto of Object-Oriented Design (OOD) principles?

  • Divide and conquer.
  • Practice makes perfect.
  • Imitation is the sincerest form of not being stupid. (correct)
  • Imitation is the sincerest form of flattery.

What is the primary goal of the Single Responsibility Principle (SRP)?

  • To increase code complexity
  • To make code more readable and maintainable (correct)
  • To allow multiple reasons for change
  • To decrease code extendability

What type of patterns deals with GUI design?

  • Database Patterns
  • Concurrency Patterns
  • Architectural Patterns
  • GUI Design Patterns (correct)

What is an example of a Concurrency Pattern?

<p>Double buffering (B)</p> Signup and view all the answers

What does ISP stand for in SOLID principles?

<p>Interface Segregation Principle (D)</p> Signup and view all the answers

What is an example of a GRASP pattern?

<p>Low Coupling/High Cohesion Pattern (D)</p> Signup and view all the answers

What is an example of an Anti-pattern?

<p>God Class (A)</p> Signup and view all the answers

How many essential elements are there in a design pattern?

<p>5 (A)</p> Signup and view all the answers

What is the main benefit of following the Don't Repeat Yourself Principle?

<p>It makes the code easier and safer to maintain. (D)</p> Signup and view all the answers

What does the Acyclic Dependencies Principle aim to achieve in software design?

<p>To create a cycle-free dependency graph (B)</p> Signup and view all the answers

Which type of design pattern is focused on the creation of objects?

<p>Creational (B)</p> Signup and view all the answers

Which principle favors polymorphic composition of objects over inheritance?

<p>Composite Reuse Principle (A)</p> Signup and view all the answers

What is the primary purpose of inheritance in object-oriented programming?

<p>To inherit members from a base class. (A)</p> Signup and view all the answers

What is the advantage of decoupling in software design?

<p>It reduces dependencies between components. (C)</p> Signup and view all the answers

What is the primary goal of the GRASP principles in object-oriented design?

<p>To assign responsibility to classes and objects (A)</p> Signup and view all the answers

Which of the following is NOT a GRASP principle?

<p>Single Responsibility Principle (C)</p> Signup and view all the answers

Which principle is related to the idea of not forcing clients to depend on interfaces they don't use?

<p>Interface Segregation Principle (B)</p> Signup and view all the answers

What is the term for a graph with no cycles, as referred to in the Acyclic Dependencies Principle?

<p>Directed Acyclic Graph (D)</p> Signup and view all the answers

What is the term for a design pattern that addresses a fundamental problem in software design?

<p>Fundamental pattern (D)</p> Signup and view all the answers

Which of the following is NOT a type of design pattern based on the problem it addresses?

<p>Architectural (C)</p> Signup and view all the answers

What is the benefit of following the Composite Reuse Principle in software design?

<p>Improved flexibility and maintainability (A)</p> Signup and view all the answers

Which of the following is an example of a class-level design pattern?

<p>Inheritance (B)</p> Signup and view all the answers

Flashcards are hidden until you start studying

Study Notes

Design Patterns

  • 5 essential elements of a pattern: pattern name, problem description, solution, consequences, and implementation
  • Types of patterns:
    • Architectural Patterns (e.g., MVC, Layers)
    • GUI Design Patterns (e.g., Window per task, Disabled irrelevant things, Explorable interface)
    • Database Patterns (e.g., decoupling patterns, resource patterns, cache patterns)
    • Concurrency Patterns (e.g., Double buffering, Lock object, Producer-consumer, Asynchronous processing)
    • Enterprise (J2EE) Patterns (e.g., Data Access Object, Data Transfer Object)

Design Principles

  • OOD key principles: "Imitation is the sincerest form of not being stupid"
  • Design Goals: code should be readable, extendable, modifiable, testable, and easy to refactor
  • SOLID design principles:
    • SRP (Single Responsibility Principle): a class should have one and only one reason to change
    • OCP (Open-Closed Principle)
    • LSP (Liskov Substitution Principle)
    • ISP (Interface Segregation Principle)
    • DIP (Dependency Inversion Principle)

Single Responsibility Principle (SRP)

  • A class should have one and only one reason to change
  • Code will be simpler and easier to maintain
  • Example: Container and Iterator (Container manages objects; Iterator traverses the container)
  • How to spot multiple responsibilities: forming sentences ending in itself

Don't Repeat Yourself (DRY)

  • Avoid duplicate code by abstracting out things that are common and placing those things in a single location
  • No duplicate code => ONE requirement in ONE place
  • This principle can and should be applied everywhere (e.g., in Analysis phase – don't duplicate requirements or features)

Types of Design Patterns

  • Based on the type of the problem it addresses (Purpose):
    • Fundamental
    • Creational
    • Structural
    • Behavioral
  • Based on the technique it uses (Scope):
    • Class (uses inheritance)
    • Object (uses object composition)

Fundamental Patterns

  • Inheritance: a mechanism that allows a class A to inherit members of a class B
  • Acyclic dependencies principle: the dependency graph of packages or components should have no cycles
  • Composite reuse principle: favor polymorphic composition of objects over inheritance

GRASP (General Responsibility Assignment Software Patterns)

  • Guidelines for assigning responsibility to classes and objects in object-oriented design
  • Includes patterns and principles such as:
    • Controller
    • Creator
    • Indirection
    • Information Expert
    • High Cohesion
    • Low Coupling
    • Polymorphism
    • Protected Variations
    • Pure Fabrication

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

sp-lecture-01-02.pdf

More Like This

Use Quizgecko on...
Browser
Browser