这门课解决什么问题

设计模式不是教条,而是解决实际代码问题的工具。当你面对重复造轮子、代码耦合度高、修改牵一发动全身这类场景时,SOLID原则和创建型模式能帮你从源头降低复杂度。对上班族来说,这意味着你写出的代码更稳定、更容易维护;对转行者来说,这是快速建立专业判断力的有效途径。这门课不讲空话,每个原则都配C#代码实例,让你看到它在真实项目中的样子。

适合什么基础

不需要你有大量开发经验。如果你能写出一个完整的控制台应用、理解类与继承、用过接口,这课的基础部分你就能跟上。课程从SOLID原则讲起,循序渐进,不会一上来就堆术语。建议你在学之前,先自己写一个简单的项目,带着问题来听课效果最好。学完这门课,你面对任何新项目,都能判断哪些设计是合理的,哪些是过度设计。

学习顺序与学完产出

建议按SOLID原则的顺序推进:先吃透单一职责原则,再逐个理解开放-关闭、里氏替换、接口隔离、依赖倒置,最后用总结回顾。原则部分学完,你能独立分析一段代码是否存在设计缺陷,也能把原有的类拆成符合原则的结构。创建型模式则按Builder、Abstract Factory、Prototype、Singleton的顺序学,每个模式都配了对比场景,学完你能把复杂对象构造重写为更简洁的模式,也能判断别人写的代码是否值得重构。

资料怎么配合练习

课程代码文件是跟着视频走的,每讲完一个模式,对应代码文件就放在那里。建议边看视频边打开对应的.cs文件,跟着敲一遍。SOLID原则的代码文件可以直接作为练习素材,试着修改其中的类和方法,观察行为变化。创建型模式则更适合动手重写,比如拿一个你已经写过的类,试着用Builder模式重写它。quiz部分用来检验理解,不必一次全做,挑自己没把握的模块过一遍就够了。

课程目录

课程目录273 集
  • 00 None.mp4
  • 001 Introduction.mp4
  • 01 The SOLID Design Principles.mp4
  • 002 Overview.mp4
  • 003 Single Responsibility Principle.mp4
  • 004 Open-Closed Principle.mp4
  • 005 Liskov Substitution Principle.mp4
  • 006 Interface Segregation Principle.mp4
  • 007 Dependency Inversion Principle.mp4
  • 008 Summary.mp4
  • attached_files
  • 003 Single Responsibility Principle.mp4
  • SOLID.SRP.cs.txt
  • 004 Open-Closed Principle.mp4
  • SOLID.OCP.cs.txt
  • 005 Liskov Substitution Principle.mp4
  • SOLID.LSP.cs.txt
  • 006 Interface Segregation Principle.mp4
  • SOLID.ISP.cs.txt
  • 007 Dependency Inversion Principle.mp4
  • SOLID.DIP.cs.txt
  • 02 Builder.mp4
  • 009 Overview.mp4
  • 010 Life Without Builder.mp4
  • 011 Builder.mp4
  • 012 Fluent Builder.mp4
  • 013 Faceted Builder.mp4
  • 014 Summary.mp4
  • 011 Builder.mp4
  • Creational.Builder.Builder.cs.txt
  • 013 Faceted Builder.mp4
  • Creational.Builder.BuilderFacets.cs.txt
  • quizzes
  • 001 Builder Coding Exercise.html
  • 03 Factories.mp4
  • 015 Overview.mp4
  • 016 Point Example.mp4
  • 017 Factory Method.mp4
  • 018 Factory.mp4
  • 019 Inner Factory.mp4
  • 020 Abstract Factory.mp4
  • 021 Abstract Factory and OCP.mp4
  • 022 Summary.mp4
  • 016 Point Example.mp4
  • Creational.Factories.Factory.cs.txt
  • 020 Abstract Factory.mp4
  • Creational.Factories.AbstractFactory.cs.txt
  • 002 Factory Coding Exercise.html
  • 04 Prototype.mp4
  • 023 Overview.mp4
  • 024 ICloneable is Bad.mp4
  • 025 Copy Constructors.mp4
  • 026 Explicit Deep Copy Interface.mp4
  • 027 Copy Through Serialization.mp4
  • 028 Summary.mp4
  • 024 ICloneable is Bad.mp4
  • Creational.Prototype.ICloneableIsBad.cs.txt
  • 025 Copy Constructors.mp4
  • Creational.Prototype.CopyConstructors.cs.txt
  • 027 Copy Through Serialization.mp4
  • Creational.Prototype.CopyThroughSerialization.cs.txt
  • 003 Prototype Coding Exercise.html
  • 05 Singleton.mp4
  • 029 Overview.mp4
  • 030 Singleton Implementation.mp4
  • 031 Testability Issues.mp4
  • 032 Singleton in Dependency Injection.mp4
  • 033 Monostate.mp4
  • 034 Summary.mp4
  • 030 Singleton Implementation.mp4
  • Creational.Singleton.Singleton.cs.txt
  • 032 Singleton in Dependency Injection.mp4
  • Creational.Singleton.SingletonInDI.cs.txt
  • 033 Monostate.mp4
  • Creational.Singleton.Monostate.cs.txt
  • 004 Singleton Coding Exercise.html
  • 06 Adapter.mp4
  • 035 Overview.mp4
  • 036 VectorRaster Demo.mp4
  • 037 Adapter Caching.mp4
  • 038 Summary.mp4
  • 036 VectorRaster Demo.mp4
  • Structural.Adapter.NoCaching.cs.txt
  • 037 Adapter Caching.mp4
  • Structural.Adapter.WithCaching.cs.txt
  • 005 Adapter Coding Exercise.html
  • 07 Bridge.mp4
  • 039 Overview.mp4
  • 040 Bridge.mp4
  • 041 Summary.mp4
  • 0OO_Softarchive - Download-More-Here.url
  • 0OO_Software.For_Mac0S.txt
  • 0OO_Windows.Office-AD0BE-Visual_Studio 2017.txt
  • 040 Bridge.mp4
  • Structural.Bridge.Bridge.cs.txt
  • 006 Bridge Coding Exercise.html
  • 08 Composite.mp4
  • 042 Overview.mp4
  • 043 Geometric Shapes.mp4
  • 044 Neural Networks.mp4
  • 045 Summary.mp4
  • 043 Geometric Shapes.mp4
  • Structural.Composite.GeometricShapes.cs.txt
  • 044 Neural Networks.mp4
  • Structural.Composite.NeuralNetworks.cs.txt
  • 007 Composite Coding Exercise.html
  • 09 Decorator.mp4
  • 046 Overview.mp4
  • 047 Custom String Builder.mp4
  • 048 Adapter-Decorator.mp4
  • 049 Multiple Inheritance.mp4
  • 050 Dynamic Decorator Composition.mp4
  • 051 Static Decorator Composition.mp4
  • 052 Summary.mp4
  • 047 Custom String Builder.mp4
  • Structural.Decorator.CodeBuilder.cs.txt
  • 048 Adapter-Decorator.mp4
  • Structural.Decorator.AdapterDecorator.cs.txt
  • 049 Multiple Inheritance.mp4
  • Structural.Decorator.MultipleInheritance.cs.txt
  • 050 Dynamic Decorator Composition.mp4
  • Structural.Decorator.Decorator.cs.txt
  • 008 Decorator Coding Exercise.html
  • 10 Façade.mp4
  • 053 Overview.mp4
  • 054 Façade.mp4
  • 055 Summary.mp4
  • 11 Flyweight.mp4
  • 056 Overview.mp4
  • 057 Repeating User Names.mp4
  • 058 Text Formatting.mp4
  • 059 Summary.mp4
  • 057 Repeating User Names.mp4
  • Structural.Flyweight.Users.cs.txt
  • 058 Text Formatting.mp4
  • Structural.Flyweight.TextFormatting.cs.txt
  • 009 Flyweight Coding Exercise.html
  • 12 Proxy - Snorgared - SAnet.cd.mp4
  • 060 Overview.mp4
  • 061 Protection Proxy.mp4
  • 062 Property Proxy.mp4
  • 063 Dynamic Proxy for Logging.mp4
  • 064 Proxy vs. Decorator.mp4
  • 065 Summary.mp4
  • 061 Protection Proxy.mp4
  • Structural.Proxy.ProtectionProxy.cs.txt
  • 062 Property Proxy.mp4
  • PropertyProxy.cs.txt
  • 063 Dynamic Proxy for Logging.mp4
  • Structural.Proxy.DynamicProxy.cs.txt
  • 010 Proxy Coding Exercise.html
  • 13 Chain of Responsibility - Snorgared - SAnet.cd.mp4
  • 066 Overview.mp4
  • 067 Command Query Separation.mp4
  • 068 Method Chain.mp4
  • 069 Broker Chain.mp4
  • 070 Summary.mp4
  • 068 Method Chain.mp4
  • Behavioral.ChainOfResponsibility.MethodChain.cs.txt
  • 069 Broker Chain.mp4
  • Behavioral.ChainOfResponsibility.BrokerChain.cs.txt
  • 011 Chain of Responsibility Coding Exercise.html
  • 14 Command.mp4
  • 071 Overview.mp4
  • 072 Command.mp4
  • 073 Undo Operations.mp4
  • 074 Summary.mp4
  • 072 Command.mp4
  • Behavioral.Command.Command.cs.txt
  • 012 Command Coding Exercise.html
  • 15 Interpreter.mp4
  • 075 Overview.mp4
  • 076 Handmade Interpreter Lexing.mp4
  • 077 Handmade Interpreter Parsing.mp4
  • 078 ANTLR.mp4
  • 079 Summary.mp4
  • 076 Handmade Interpreter Lexing.mp4
  • Behavioral.Interpreter.Handmade.cs.txt
  • 013 Interpreter Coding Exercise.html
  • 16 Iterator.mp4
  • 080 Overview.mp4
  • 081 Iterator Object.mp4
  • 082 Iterator Method.mp4
  • 083 Iterators and Duck Typing.mp4
  • 084 Array-Backed Properties.mp4
  • 085 Summary.mp4
  • 081 Iterator Object.mp4
  • Behavioral.Iterator.TreeTraversal.cs.txt
  • 084 Array-Backed Properties.mp4
  • ArrayBackedProperties.cs.txt
  • 014 Iterator Coding Exercise.html
  • 17 Mediator.mp4
  • 086 Overview.mp4
  • 087 Chat Room.mp4
  • 088 Event Broker.mp4
  • 089 Summary.mp4
  • 087 Chat Room.mp4
  • Behavioral.Mediator.ChatRoom.cs.txt
  • 088 Event Broker.mp4
  • RxEventBroker.cs.txt
  • 015 Mediator Coding Exercise.html
  • 18 Memento.mp4
  • 090 Overview.mp4
  • 091 Memento.mp4
  • 092 Undo and Redo.mp4
  • 093 Memento for Interop.mp4
  • 094 Summary.mp4
  • 091 Memento.mp4
  • Behavioral.Memento.Memento.cs.txt
  • 092 Undo and Redo.mp4
  • Behavioral.Memento.UndoRedo.cs.txt
  • 19 Null Object.mp4
  • 095 Overview.mp4
  • 096 Null Object.mp4
  • 097 Dynamic Null Object.mp4
  • 098 Summary.mp4
  • 096 Null Object.mp4
  • Behavioral.NullObject.NullObject.cs.txt
  • 20 Observer.mp4
  • 099 Overview.mp4
  • 100 Observer via the event Keyword.mp4
  • 101 Weak Event Pattern.mp4
  • 102 Observable Properties and Sequences.mp4
  • 103 Summary.mp4
  • 100 Observer via the event Keyword.mp4
  • Behavioral.Observer.Events.cs.txt
  • 101 Weak Event Pattern.mp4
  • Behavioral.Observer.WeakEventPattern.cs.txt
  • 102 Observable Properties and Sequences.mp4
  • ObserverPattern.cs.txt
  • 21 State.mp4
  • 104 Overview.mp4
  • 105 Handmade State Machine.mp4
  • 106 State Machine with Stateless.mp4
  • 107 Summary.mp4
  • 105 Handmade State Machine.mp4
  • Behavioral.State.Handmade.cs.txt
  • 106 State Machine with Stateless.mp4
  • Behavioral.State.Stateless.cs.txt
  • 22 Strategy.mp4
  • 108 Overview.mp4
  • 109 Dynamic Strategy.mp4
  • 110 Static Strategy.mp4
  • 111 Summary.mp4
  • 109 Dynamic Strategy.mp4
  • Behavioral.Strategy.Dynamic.cs.txt
  • 110 Static Strategy.mp4
  • Behavioral.Strategy.Static.cs.txt
  • 23 Template Method.mp4
  • 112 Overview.mp4
  • 113 Template Method.mp4
  • 114 Summary.mp4
  • 113 Template Method.mp4
  • Behavioral.TemplateMethod.TemplateMethod.cs.txt
  • 24 Visitor.mp4
  • 115 Overview.mp4
  • 116 Intrusive Expression Printing.mp4
  • 117 Reflection-Based Printing.mp4
  • 118 Classic Visitor Double Dispatch.mp4
  • 119 Dynamic Visitor via the DLR.mp4
  • 120 Summary.mp4
  • 116 Intrusive Expression Printing.mp4
  • Behavioral.Visitor.Intrusive.cs.txt
  • 117 Reflection-Based Printing.mp4
  • Behavioral.Visitor.Reflective.cs.txt
  • 118 Classic Visitor Double Dispatch.mp4
  • Behavioral.Visitor.Classic.cs.txt
  • 119 Dynamic Visitor via the DLR.mp4
  • Behavioral.Visitor.Dynamic.cs.txt
  • 25 Course Summary.mp4
  • 121 Creational Paterns Summary.mp4
  • 122 Structural Patterns Summary.mp4
  • 123 Behavioral Patterns Summary.mp4
  • 124 End of Course.mp4
  • 00 None│ 001 Introduction.mp4│
  • 01 The SOLID Design Principles│ │ 002 Overview.mp4│ │ 003 Single Responsibility Principle.mp4│