System Design
  • Introduction
  • System Design Process
  • System Design Systematic Approach
  • System Design Topics
  • System Design Interview Tips
  • Object Oriented Design
  • System Design Problems
    • Designing an API Rate Limiter
    • Design News Feed
    • Design Recommendation System
    • Design Photo Sharing App
    • Design Location Based App
    • Design Messenger App
    • Design Twitter
    • Design Uber Lyft
    • Design Surge Pricing
  • Architect's Toolbox
    • Cache Design
    • Database and Cache
    • Pull vs Poll
    • Geo Location
    • Storage Estimation
    • ID Generator
    • Latency Numbers
    • Encoding Decoding Encryption Decryption
  • Systems Design Glossary
    • Consistent Hashing
    • Sharding or Partitioning
    • Database Indexes
    • Proxies
    • Caching
    • Queues
    • SQL vs. NoSQL
    • CAP Theorem
    • Distributed Messaging System
    • Long-Polling vs WebSockets vs Server-Sent Events
    • Producer and Consumer
    • Latency, Bandwidth and Throughput
    • Microservices Architecture
    • RESTful API
    • Concurrent Programming
  • Distributed System Resources
    • Distributed System Notes
  • Reference
Powered by GitBook
On this page
  • SOLID Principles
  • Single responsibility principle 单一责任原则
  • Open close principle 开放封闭原则
  • Liskov substitution principle 里氏替换原则
  • Interface segregation principle 接口分离原则
  • Dependency inversion principle 依赖反转原则
  • 5C解题法
  • Clarify
  • Core objects
  • Cases
  • Classes
  • Correctness

Was this helpful?

Object Oriented Design

SOLID Principles

  • S – Single responsibility principle

  • O – Open close principle

  • L – Liskov substitution principle

  • I – Interface segregation principle

  • D – Dependency inversion principle

Single responsibility principle 单一责任原则

一个类应该有且只有一个去改变他的理由,这意味着一个类应该只有一项工作。

Open close principle 开放封闭原则

对象或实体应该对扩展开放,对修改封闭 (Open to extension, close to modification)。

Liskov substitution principle 里氏替换原则

任何一个子类或派生类应该可以替换它们的基类或父类

Interface segregation principle 接口分离原则

不应该强迫一个类实现它用不上的接口

Dependency inversion principle 依赖反转原则

抽象不应该依赖于具体实现,具体实现应该依赖于抽象

High-level的实体不应该依赖于low-level的实体

5C解题法

Clarify

说人话:通过和面试官交流,去除题目中的歧义,确定答题范围

Core objects

说人话:确定题目所涉及的类,以及类之间的映射关系

Cases

说人话:确定题目中所需要实现的场景和功能

Classes

说人话:通过类图的方式,具体填充题目中涉及的类

Correctness

说人话:检查自己的设计,是否满足关键点

PreviousSystem Design Interview TipsNextSystem Design Problems

Last updated 5 years ago

Was this helpful?