马蜂窝治什么病最好| 牛肉和什么炒好吃| 打眼是什么意思| 对什么有益英语| 38岁适合什么护肤品| 化验血能查出什么项目| 抽血前喝水有什么影响| 什么中药补肾最好| 甘油三酯高吃什么药最好| 指甲的月牙代表什么| pmid是什么意思| 嘴唇肿是什么原因| 清洁度iv是什么意思| 缺维生素e有什么症状| 什么叫腺样体肥大| 1.30是什么星座| 佐助是什么意思| 女孩小名叫什么好| 打嗝是什么病的前兆| 挂失补办身份证需要什么| 探病买什么水果| 什么什么为难| 妇科炎症小腹坠痛吃什么药| 水仙茶适合什么人喝| bally什么档次| 什么是外围| 额娘是什么意思| 阎王爷姓什么| 吃什么排气| 烧包是什么意思| 苦瓜为什么是苦的| 宠物蛇吃什么食物| 空调为什么不制冷| 经常耳鸣是什么原因| 购置是什么意思| 酸奶有什么营养价值| 黄芪精适合什么人喝| 艺人是什么意思| 孕妇吃什么蔬菜好| 脚气用什么药膏最好| 金铃子是什么昆虫| 儿童个子矮小看什么科| 物上代位性是什么意思| 讨好的笑是什么笑| 爽肤水和精华水有什么区别| 为什么家里有蟑螂| 泌乳素偏高是什么原因| 百米12秒什么水平| 明星经纪人是干什么的| 借鸡生蛋是什么意思| 木薯淀粉是什么做的| 两对半是什么意思| 无痛人流后吃什么对身体恢复比较好| 黄体破裂是什么原因造成的| 眼睛有黑影是什么原因| 锌中毒是什么症状| 幻听是什么原因引起的| 反射弧长是什么意思| 军国主义是什么意思| 耳毛念什么| 什么是双减| 知了猴什么时候结束| 青岛属于什么气候| 小孩肠胃炎吃什么药| 苏州有什么好玩的地方| 什么体质容易高原反应| 做爱女生是什么感觉| 瑞士移民需要什么条件| 梦见在水里游泳是什么意思| 5月9号什么星座| 胳膊肘往外拐是什么意思| 天空为什么是蓝色的| 耳什么目明| 肾虚是什么症状| 胰腺在人体什么位置| 小孩睡觉磨牙齿是什么原因| 什么狗不会咬人| 老虎吃什么食物| 脾囊肿是什么原因引起的| 土耳其说什么语言| 乔丹是什么品牌| 先明后不争什么意思| 什么时候有胎心| 取环后应该注意什么| ipi是什么意思| fov是什么| 清关是什么意思| 消停是什么意思| 做梦梦见狗咬我什么意思啊| 读书心得是什么意思| 嘴唇上长水泡是什么原因| 福瑞祥和是什么意思| 什么不及什么| 王字旁加己念什么| 低密度脂蛋白偏高是什么原因| 儿童支原体感染吃什么药| 晚上睡觉手麻是什么原因| 魔怔什么意思| 眼底检查主要查什么| 什么是负数| 根是什么| 病毒性感冒吃什么药效果好| 水清则无鱼什么意思| 盆底肌松弛有什么影响| 吃什么能补充雌激素| 处女座和什么座最配| 秋水长天什么意思| 摩拳擦掌是什么意思| npv是什么病毒| 神奇的近义词是什么| b族维生素什么人不能吃| 症候群什么意思| 血压高压低是什么原因| 桃子不能跟什么一起吃| 斑鸠和鸽子有什么区别| fdg是什么意思| 年轻人长老年斑是什么原因| 梭子蟹什么时候上市| b2驾照能开什么车| 92年属猴是什么命| 姨妈期吃什么水果| 1993属什么生肖| h的车标是什么牌子| 流氓兔什么意思| 吃什么不升血糖| 蜘蛛吃什么| 血糖高吃什么食物| 直率是什么意思| 晚上睡觉腿酸难受是什么原因| paco2是什么意思| 早孕三项检查什么| 鱼龙混杂什么意思| 但闻人语响的但是什么意思| 7.11是什么日子| 黑吃黑是什么意思| 太行山在什么地方| 老年人补什么钙效果最好| 孜孜不倦是什么意思| 饶舌是什么意思| 人什么什么事的成语| 梦见死去的姥姥是什么意思| 早泄吃什么| 胃窦炎吃什么药效果最好| 荷叶像什么比喻句| 急性胃肠炎用什么药| 今天是什么生肖日| 三月十三是什么星座| 饣与什么有关| 脾虚湿蕴证是什么意思| 闭合性跌打损伤是什么意思| 鱼是什么结构| 什么时候买机票便宜| 省纪委常委是什么级别| nk是什么意思| 神经痛吃什么药效果好| 肺部斑片状高密度影是什么意思| 泪河高度说明什么| 淋巴细胞低说明什么| 白酒配什么饮料好喝| 荷字五行属什么| 神阙穴在什么位置| 什么是疱疹| 2月29号是什么星座| 爱困总想睡觉什么原因| 绿豆汤放什么糖| 偏头痛是什么原因引起的| 嚼舌根是什么意思| 脸上为什么会长痣| 未时左眼跳是什么预兆| 碳酸钙是什么| 存在感是什么意思| 2月1号是什么星座| 缩量十字星意味着什么| 骨相美是什么意思| 壁立千仞无欲则刚是什么意思| 满文军现在在干什么| 年轻人血压高是什么原因引起的| 9月份出生的是什么星座| 春暖花开是什么生肖| 化疗后骨髓抑制是什么意思| 小孩牙疼有什么办法| 属蛇的本命佛是什么佛| 心脏早搏是什么意思| 客套是什么意思| 左卵巢囊性结构是什么意思| 嗓子痛挂什么科| 为什么拉屎会拉出血| 对牛弹琴代表什么生肖| 局部癌变是什么意思| 生理期不能吃什么水果| 右手手背有痣代表什么| 饿得快是什么原因| usc是什么意思| 11月18号是什么星座| 刘备是个什么样的人| 肝囊肿吃什么药| 入幕之宾是什么意思| 膝关节积液吃什么药| 华妃娘娘是什么电视剧| 一什么秋千| 肝脓肿是什么原因引起的| 户籍地址是什么| 试管是什么意思| 尿蛋白低是什么原因| 额头反复长痘是什么原因| 影射是什么意思| 产检建档需要什么资料| 什么是健康证| 吃什么助于长高| 说一个人轴是什么意思| 喝酒眼睛红是什么原因| 吃什么能快速减肥| 荷叶配什么减肥效果好| 劼字取名的寓意是什么| 尿遁什么意思| 阴茎破皮擦什么药| 麻黄是什么| 什么叫渣男| 唐伯虎属什么生肖| 水逆退散什么意思| 总胆红素高是什么意思| 开业需要准备什么东西| 什么食物养胃| 什么人容易得眩晕症| 下眼睑浮肿是什么原因| 什么叫撤退性出血| 在屋顶唱着你的歌是什么歌| 11月2号是什么星座| 3.13是什么星座| 酒精和碘伏有什么区别| 什么是天丝| 什么样的大地| 老是打哈欠是什么原因| 一个三点水一个除念什么| 为什么狱警离婚率高| 什么时间量血压最准| 下家是什么意思| 心血管病人吃什么最好| 盆浴是什么意思| 肺结节吃什么食物好| 千里马比喻什么样的人| 热水器什么牌子好| 小麦和大麦有什么区别| 二甲医院是什么意思| 夫妻少配无刑是什么意思| 屁股右边痛是什么原因| 婷婷玉立什么意思| 后背疼挂什么科| 头孢克肟和头孢拉定有什么区别| 乳腺癌挂什么科| 香港有什么好吃的| 水解奶粉是什么意思| 莲白是什么菜| 杏花是什么季节开的| 什么是事实婚姻| 1987年属什么| 抗磷脂综合征是什么病| 为什么蚊子喜欢咬我| 什么叫轻度脂肪肝| 小孩眨眼睛是什么原因| 网红是什么意思| 皮下出血小红点是什么原因造成的| 怹是什么意思| 蚊子咬了为什么痒| 百度
Skip to content

Instantly share code, notes, and snippets.

@Pen-y-Fan

澄迈--人民网海南频道--人民网

Last active June 11, 2025 08:34
Show Gist options
  • Save Pen-y-Fan/c99a94102fee9fd132265578b20885a1 to your computer and use it in GitHub Desktop.
Save Pen-y-Fan/c99a94102fee9fd132265578b20885a1 to your computer and use it in GitHub Desktop.

Learning Plan for Design Patterns and Principles of Good Design

These learning resources primarily focus on programming using Good Design Principles and Design Patterns

  • There is an emphasis on learning using PHP, although most patterns are universal to every object orientated language.
  • All these resources are free (at the time of writing)

Table of Contents

1. Video (YouTube)

  • Object Oriented Design - Derek Banas (2012)
    • Derek creates several OO Designs using UML diagrams, before creating the code in Java.
  • SOLID Principles of Object Oriented and Agile Design - Bob Martin (2015) (start 12:25) YouTube 1h 10m
  • Software Design Patterns and Principles (quick overview) - TechLead (2018) YouTube 11m23s. Keep it simple. TechLead briefly explained the design patterns he uses.
  • Design Patterns Video Tutorial - Derek Banas (2014) (Total playtime 7h 4m) - Covers 24 design patterns!

    In my Design Patterns Video Tutorial I will cover all of the most common design patterns. I'll also explain when to use them and other topics on OOP design principles

  • Chasing "Perfect" - Adam Wathan - Laracon EU 2015, YouTube 45 min
    • Real time coding, clean code, using tests at every step of the process.
    • This is also listed in my TDD plan. It is well worth another watch, after learning more about Patterns the refactoring made much more sense.
  • PHP Design Patterns - Elements of Reusable Object-Oriented Software - Easy Learn Tutorial (2014) - covers 8 design patterns.

    Design patterns are key to good PHP programming, and a fundamental to anyone wanting to learn PHP and become a better programmer. Design patterns are solutions for common problems that people have discovered and documented, so you don't have to re-invent the wheel every time you run into one of these problems on your next software engineering project.

  • Design Patterns - Smok (Rafal Swidzinski) (2019) - Java (~1h 10m) - A brief explanation of the 23 design patterns from GoF book.

    Software Design Patterns have been around for a while. It is finally time to get to know them. In this video I introduce the most important terms, and explain what Design Patterns are about. So if you want to learn a Design Patterns - this is a good place to start.

  • SOLID Principles - craigctp (2012) (~14 min) 5 video series.

    DevExpress CTO Messages for the SOLID object oriented development Principles.

2. Podcasts

  • 16: Kent Beck - Tiny Decisions and Emergent Design - FullStackRadio #16 Podcast

    In this episode, Adam talks to Kent Beck about Smalltalk vs. Java, low level design vs. big picture architecture, planning for the future vs. emergent design, and applying the principles of Extreme Programming in 2015.

  • 22: Corey Haines - The 4 Rules of Simple Design - FullStackRadio #22 Podcast

    ... Every episode, Adam Wathan is joined by a guest [Corey Haines] to talk about everything from product design and user experience to unit testing and system administration.

3. Books, manuals and websites (inc. BlogPosts)

Design Patterns

  • Book:Design Patterns - Wikipedia, links to Wikipedia articles on design patterns (at the time of writing, the book is not available for download):
    • Overview:
    • Creational Patterns:
      • Creational pattern, Abstract factory pattern, Builder pattern, Factory method pattern, Lazy initialization, Multiton pattern, Object pool pattern, Prototype pattern, Resource Acquisition Is Initialization, Singleton pattern
    • Structural patterns:
      • Structural pattern, Adapter pattern, Bridge pattern, Composite pattern, Decorator pattern, Facade pattern, Front Controller pattern, Flyweight pattern, Proxy pattern
    • Behavioral patterns:
      • Behavioral pattern, Chain-of-responsibility pattern, Command pattern, Interpreter pattern, Iterator pattern, Mediator pattern, Memento pattern, Null Object pattern, Observer pattern, Publish/subscribe, Design pattern Servant, Specification pattern, State pattern, Strategy pattern, Template method pattern, Visitor pattern
    • Concurrency patterns:
      • Concurrency pattern, Active object, Balking pattern, Messaging pattern, Double-checked locking, Asynchronous method invocation, Guarded suspension, Lock, Monitor, Reactor pattern, Readers-writer lock, Scheduler pattern, Thread pool pattern, Thread-local storage
  • Design Patterns - SourceMaking.com, detailed articles on code examples are given in Java, C++, PHP and Python

    In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.

    • Creational patterns - 6 patterns (Abstract Factory, Builder, Factory Method, Object Pool, Prototype and Singleton)

      In software engineering, creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation.

    • Structural patterns - 8 patterns (Bridge, Composite, Decorator, Facade, Flyweight, Private Class Data and Proxy)

      In Software Engineering, Structural Design Patterns are Design Patterns that ease the design by identifying a simple way to realize relationships between entities.

    • Behavioral patterns - 11 patterns (Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Null Object, Observer, State, Strategy, Template method, Visitor)

      In software engineering, behavioral design patterns are design patterns that identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication.

  • Design Patterns - PHPTheRightWay.com (Factory, Singleton, Strategy, Front Controller, Model-View-Controller)

    There are numerous ways to structure the code and project for your web application, and you can put as much or as little thought as you like into architecting. But it is usually a good idea to follow common patterns because it will make your code easier to manage and easier for others to understand.

  • DesignPatternsPHP - Dominik Liebler (c2015)

    This is a collection of known design patterns and some sample code how to implement them in PHP. Every pattern has a small list of examples (most of them from Zend Framework, Symfony2 or Doctrine2 as I’m most familiar with this software).

    • The book has all the documentation and code on Github, including tests!
  • PHP design patterns PHPEnthusiast (c2015)
  • Design Patterns Book Original book by GoF, with links to articles
  • Design patterns implemented in Java - Iluwatar (Github)
  • Design Patterns - PavelLoparev (Github) (2017)

    Contains examples of design patterns that are implemented using PHP

  • GoFPatterns

    In this course you will learn what the GOF (Gang of Four) patterns are and how they help solve common problems encountered in object-oriented design.

    • Design Patterns are a software engineering concept describing recurring solutions to common problems in software design.
  • The Catalogue of Design Patterns - Refactoring Guru (Partner site to SourceMaking.com)
  • Design Patterns for Humans - kamranahmedse (Github) (2018)

    Ultra-simplified explanation to design patterns!

  • Awesome Software Design Patterns - DovAmir (Github) (2019)

    A curated list of software and architecture related design patterns.

  • Design Patterns in PHP Andrew (c2019) - 23 design patterns with short PHP scripts.

    Patterns in PHP. Today we will discuss design patterns in web development, more precisely – in PHP.

[Principles of Good Design

  • SOLID principles of object-oriented programming - wikipedia (2-3 minutes)

    SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable.

    • Single responsibility principle
      • A class should only have a single responsibility, that is, only changes to one part of the software's specification should be able to affect the specification of the class.
    • Open–closed principle
      • "Software entities ... should be open for extension, but closed for modification."
    • Liskov substitution principle
      • "Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program." See also design by contract.
    • Interface segregation principle
      • "Many client-specific interfaces are better than one general-purpose interface."
    • Dependency inversion principle
      • One should "depend upon abstractions, [not] concretions."
  • GRASP (object-oriented design) - wikipedia (6-8 minutes)

    General Responsibility Assignment Software Patterns (or Principles), abbreviated GRASP, consist of guidelines for assigning responsibility to classes and objects in object-oriented design. The different patterns and principles used in GRASP are controller, creator, indirection, information expert, high cohesion, low coupling, polymorphism, protected variations, and pure fabrication.

  • KISS principle - wikipedia (5-6 minutes)

    KISS, an acronym for "keep it simple, stupid"

  • Don't repeat yourself - wikipedia (3-4 minutes)

    DRY is a principle of software development aimed at reducing repetition of software patterns, replacing it with abstractions or using data normalization to avoid redundancy.

  • Software design pattern - wikipedia (25-32 minutes)

    In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

  • S.O.L.I.D: The First 5 Principles of Object Oriented Design - Samuel Oloruntoba (2015). 12-15 minutes read.
  • S.O.L.I.D design principles for everyone - Reddit u/juanorozcov (AKA Juan Orozco Villalobos) posted links to his article on BrainsToBytes:

4. Tooling

5. Conclusion

Tips for Learning

Start shallow and broad. Skim as many as you can at the beginning. When you know what they do go deeper, only if you need to. - Smok

My take on this is to learn the different patterns, where they would be used, but do not memorise how to program every one. Once code is refactored and a pattern identified, then use the examples from above to implement the exact programming pattern.

I think the problem with patterns is that often people do know them but don't know when to apply which. - Dominik Liebler (DesignPatternsPHP)

My take is the patterns need to be known and what context they are best used for.

6. Other Learning Plans

The previous plan to Design Patterns is Learning Plan for Test Driven Development (TDD)

7. License

This learning plan is open-source licensed under the MIT license.

Copyright (c) 2019 Pen-Y-Fan

Permission is hereby granted, free of charge, to any person obtaining a copy of this learning plan and associated documentation files (the "Plan"), to deal in the Plan without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Plan, and to permit persons to whom the Plan is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Plan.

Content copied from Wikipedia.org is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
杨玉环是什么星座 为什么会长荨麻疹 补位是什么意思 肺部不好有什么症状 什么水果补钾
相对而行是什么意思 间接胆红素高说明什么 藿香正气水不能和什么药一起吃 人为什么要火化 宝宝胎动频繁说明什么
得偿所愿是什么意思 什么的梦想 处女男和什么星座最配 龟头责是什么意思 线下培训是什么意思
天经地义的意思是什么 喝酒眼睛红是什么原因 求购是什么意思 利益最大化是什么意思 8月12日是什么星座
女生为什么会流白带hcv7jop6ns1r.cn 心烦意乱吃什么药hcv9jop3ns9r.cn 水滴鱼长什么样子hcv7jop9ns1r.cn 煮牛肉放什么料hcv9jop4ns9r.cn 八股文是什么hcv8jop6ns9r.cn
局级干部是什么级别hcv9jop7ns5r.cn 尿道灼热感吃什么药travellingsim.com 须菩提是什么意思hcv7jop9ns1r.cn 内裤上有黄色分泌物是什么原因hkuteam.com 我想成为一个什么样的人wzqsfys.com
人中发红是什么原因zsyouku.com 广字五行属什么clwhiglsz.com 宫腔内无回声区是什么意思hcv7jop9ns3r.cn 玉帝叫什么名字hcv8jop1ns5r.cn 花开花落不见你回头是什么歌baiqunet.com
什么病可以申请低保hcv7jop5ns6r.cn 什么是小男人hcv8jop7ns0r.cn 宝宝拉水便是什么原因weuuu.com 滋润是什么意思hcv7jop7ns1r.cn 阑尾炎吃什么药ff14chat.com
百度