Skip to content

Instantly share code, notes, and snippets.

@rgreenjr
Last active January 22, 2024 05:54
Show Gist options
  • Save rgreenjr/06cbe33b074692f4602d to your computer and use it in GitHub Desktop.
Save rgreenjr/06cbe33b074692f4602d to your computer and use it in GitHub Desktop.
Object Oriented Design Notes

Sandi Metz

  • Inheritance is not for sharing behavior
  • Active Nothing (Null Object Pattern)
    • Must believe in nothing
  • No such thing as one specialization
    • The new behavior is one thing and the original behavior is the other
    • Isolate the difference, name the concept, define the role, inject the players

Model Names

  • Adapter
  • Authenticator
  • Base
  • Broker
  • Bucket
  • Builder
  • Catalog
  • Container
  • Controller
  • Converter
  • Coordinator
  • Directory
  • Engine
  • Entity
  • Factory
  • Feed
  • Finder
  • Gateway
  • Generator
  • Handler
  • Index
  • Listener
  • Manager
  • Mediator
  • Notifier
  • Observer
  • Policy
  • Presenter
  • Producer
  • Protocol
  • Provider
  • Query
  • Reader
  • Record
  • Registry
  • Repository
  • Responder
  • Service
  • Session
  • Singleton
  • Source
  • State
  • Strategy
  • Synchronizer
  • Target
  • Template
  • Tracker
  • View
  • Visitor
  • Writer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment