Jump to content

Recommended Posts

While writing Design Patterns with Delphi, I spent quite some time researching existing literature on design patterns implementation in Delphi, design patterns in other languages, other types of patterns, design principles and so on …

 

In case you would like to dig deeper than the book takes you, here is my reading list.

Design Patterns Essentials

Software design pattern

Computer Science Design Patterns

The 23 patterns from the GoF

Design Patterns with examples in different languages (including Delphi)     

Gang of Four Design Patterns Reference Sheet

Programming principles

Design principles and design patterns

SOLID

Don't Repeat Yourself (DRY)

KISS

YAGNI (You Ain't Gonna Need It)

Software Design Patterns Are Not Goals, They Are Tools

I'm Sick Of GoF Design Patterns

Software Development AntiPatterns

Big Ball of Mud

Design Patterns for Humans

Spring4D
   
MMX Code Explorer

Singleton

https://en.wikipedia.org/wiki/Singleton_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Singleton

http://www.yanniel.info/2010/10/singleton-pattern-delphi.html

https://ibeblog.com/2010/08/18/delphi-singleton-patterns/

https://stackoverflow.com/a/1409672/4997

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Creational.Singleton

https://stackoverflow.com/questions/1409593/creating-a-singleton-in-delphi-using-the-new-features-of-d2009-and-d2010

https://sourcemaking.com/design_patterns/singleton

https://schellingerhout.github.io/design%20patterns/design-patterns-creational-delphi/

https://github.com/kamranahmedse/design-patterns-for-humans#-singleton

Dependency injection 

https://en.wikipedia.org/wiki/Dependency_injection

http://www.nickhodges.com/post/Service-Locator-is-Indeed-an-Anti-pattern.aspx

https://softwareengineering.stackexchange.com/questions/135914/why-was-dependency-injection-pattern-not-included-in-the-gang-of-four/135982

https://stackoverflow.com/questions/4176520/what-is-the-difference-between-strategy-pattern-and-dependency-injection

Lazy Initialization

https://en.wikipedia.org/wiki/Lazy_initialization

Object pool

https://en.wikipedia.org/wiki/Object_pool_pattern

https://sourcemaking.com/design_patterns/object_pool

Factory method

https://en.wikipedia.org/wiki/Factory_method_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Factory_method    

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Creational.FactoryMethod                     

https://sourcemaking.com/design_patterns/factory_method

https://schellingerhout.github.io/design%20patterns/design-patterns-creational-delphi/

https://github.com/kamranahmedse/design-patterns-for-humans#-factory-method

Abstract factory

https://en.wikipedia.org/wiki/Abstract_factory_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Abstract_Factory

http://www.felix-colibri.com/papers/design_patterns/factory_and_bridge_patterns/factory_and_bridge_patterns.html#abstract_factory_pattern

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Creational.AbstractFactory

http://www.nickhodges.com/post/Delphi-and-the-Factory-Pattern-Simple-Factory.aspx

https://sourcemaking.com/design_patterns/abstract_factory

https://schellingerhout.github.io/design%20patterns/design-patterns-creational-delphi/

https://github.com/kamranahmedse/design-patterns-for-humans#-abstract-factory

Prototype

https://sourcemaking.com/design_patterns/prototype

https://schellingerhout.github.io/design%20patterns/design-patterns-creational-delphi/

https://en.wikipedia.org/wiki/Object_copying#Deep_copy

https://github.com/kamranahmedse/design-patterns-for-humans#-prototype

Builder

https://en.wikipedia.org/wiki/Builder_pattern

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Creational.Builder

https://sourcemaking.com/design_patterns/builder

https://schellingerhout.github.io/design%20patterns/design-patterns-creational-delphi/

https://github.com/kamranahmedse/design-patterns-for-humans#-builder

Composite

https://en.wikipedia.org/wiki/Composite_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Composite

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Structural.Composite

https://sourcemaking.com/design_patterns/composite

https://github.com/kamranahmedse/design-patterns-for-humans#-composite

Flyweight

https://en.wikipedia.org/wiki/Flyweight_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Flyweight

https://sourcemaking.com/design_patterns/flyweight

https://github.com/kamranahmedse/design-patterns-for-humans#-flyweight

https://en.wikipedia.org/wiki/String_interning   

Marker interface

https://en.wikipedia.org/wiki/Marker_interface_pattern

Bridge

https://stackoverflow.com/questions/350404/how-do-the-proxy-decorator-adapter-and-bridge-patterns-differ

https://en.wikipedia.org/wiki/Bridge_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Bridge

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Structural.Bridge

https://sourcemaking.com/design_patterns/bridge

http://www.felix-colibri.com/papers/design_patterns/factory_and_bridge_patterns/factory_and_bridge_patterns.html#the_bridge_design_pattern

https://simpleprogrammer.com/design-patterns-simplified-the-bridge-pattern/

https://github.com/kamranahmedse/design-patterns-for-humans#-bridge

https://stackoverflow.com/q/319728/4997

Adapter

https://en.wikipedia.org/wiki/Adapter_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Adapter

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Structural.Adapter      

https://sourcemaking.com/design_patterns/adapter

https://github.com/kamranahmedse/design-patterns-for-humans#-adapter

Proxy

https://en.wikipedia.org/wiki/Proxy_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Proxy

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Structural.Proxy

https://sourcemaking.com/design_patterns/proxy

https://github.com/kamranahmedse/design-patterns-for-humans#-proxy

Decorator

https://en.wikipedia.org/wiki/Decorator_pattern

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Structural.Decorator

https://sourcemaking.com/design_patterns/decorator

https://github.com/kamranahmedse/design-patterns-for-humans#-decorator

Facade

https://en.wikipedia.org/wiki/Facade_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Facade

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Structural.Facade

https://sourcemaking.com/design_patterns/facade

https://github.com/kamranahmedse/design-patterns-for-humans#-facade

Null object

https://en.wikipedia.org/wiki/Null_object_pattern

https://sourcemaking.com/design_patterns/null_object

Template method

https://en.wikipedia.org/wiki/Template_method_pattern

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Behavioral.TemplateMethod

https://www.codeproject.com/Articles/516094/TemplateplusMethodplusDesignplusPatternplusinplusD

https://sourcemaking.com/design_patterns/template_method

https://github.com/kamranahmedse/design-patterns-for-humans#-template-method

Command

https://en.wikipedia.org/wiki/Command_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Command

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Behavioral.Command

https://sourcemaking.com/design_patterns/command

https://github.com/kamranahmedse/design-patterns-for-humans#-command

https://stackoverflow.com/q/6064116/4997

State

https://en.wikipedia.org/wiki/State_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/State

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Behavioral.State

https://sourcemaking.com/design_patterns/state

https://sourcemaking.com/design_patterns/state/delphi

https://github.com/kamranahmedse/design-patterns-for-humans#-state

https://en.wikipedia.org/wiki/Finite-state_machine

Iterator

https://en.wikipedia.org/wiki/Iterator_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Iterator

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Behavioral.Iterator

https://sourcemaking.com/design_patterns/iterator

https://github.com/kamranahmedse/design-patterns-for-humans#-iterator

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Declarations_and_Statements_(Delphi)#For_Statements

Visitor

https://en.wikipedia.org/wiki/Visitor_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Visitor

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Behavioral.Visitor

https://sourcemaking.com/design_patterns/visitor

https://sourcemaking.com/design_patterns/visitor/delphi     

https://github.com/kamranahmedse/design-patterns-for-humans#-visitor   

Observer

https://en.wikipedia.org/wiki/Observer_pattern

https://en.wikipedia.org/wiki/Publish–subscribe_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Observer

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Behavioral.Observer

https://github.com/spinettaro/delphi-event-bus

https://sourcemaking.com/design_patterns/observer/delphi

https://github.com/kamranahmedse/design-patterns-for-humans#-observer

http://docwiki.embarcadero.com/Libraries/en/System.Messaging.TMessageManager

http://docwiki.embarcadero.com/RADStudio/en/Using_the_RTL_Cross-Platform_Messaging_Solution

http://docwiki.embarcadero.com/RADStudio/en/Sending_and_Receiving_Messages_Using_the_RTL

http://docwiki.embarcadero.com/Libraries/en/System.Classes.TComponent.Observers

Memento

https://en.wikipedia.org/wiki/Memento_pattern

https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Memento

https://github.com/jimmckeeth/DelphiPatterns/tree/master/Behavioral.Memento

https://sourcemaking.com/design_patterns/memento

https://github.com/kamranahmedse/design-patterns-for-humans#-memento

Lock

https://en.wikipedia.org/wiki/Lock_(computer_science)

https://en.wikipedia.org/wiki/Spinlock

Lock striping

https://netjs.blogspot.si/2016/05/lock-striping-in-java-concurrency.html

Double-checked locking

https://en.wikipedia.org/wiki/Double-checked_locking

https://en.wikipedia.org/wiki/Test_and_test-and-set

Optimistic locking

https://www.javaworld.com/article/2075406/java-web-development/optimistic-locking-pattern-for-ejbs.html

https://martinfowler.com/eaaCatalog/optimisticOfflineLock.html

https://en.wikipedia.org/wiki/Optimistic_concurrency_control

Readers-writer lock

https://en.wikipedia.org/wiki/Readers–writer_lock

https://docs.microsoft.com/en-us/windows/desktop/sync/slim-reader-writer--srw--locks

Thread pool

https://en.wikipedia.org/wiki/Thread_pool

https://stackoverflow.com/questions/47504201/delphi-ttask-and-tthreadpool

Messaging

https://en.wikipedia.org/wiki/Message_passing

https://en.wikipedia.org/wiki/Message_queue

Future

https://en.wikipedia.org/wiki/Futures_and_promises

Pipeline

https://en.wikipedia.org/wiki/Staged_event-driven_architecture

Designing Delphi programs

https://en.wikipedia.org/wiki/Event-driven_programming

http://blong.com/Articles/Actions/Actions.htm

https://github.com/andrea-magni/TFrameStand

https://martinfowler.com/eaaCatalog/tableModule.html     

https://stackoverflow.com/questions/433819/table-module-vs-domain-model 

http://docwiki.embarcadero.com/RADStudio/en/LiveBindings_in_RAD_Studio

https://www.embarcadero.com/images/dm/technical-papers/understanding_rad_studio_livebindings.pdf

Other kinds of patterns

https://en.wikipedia.org/wiki/Exception_handling

http://wiki.c2.com/?ExceptionPatterns

http://docwiki.embarcadero.com/Libraries/en/System.TObject.Destroy

http://www.heaventools.com/eurekalog-exception-logger.htm

http://www.madshi.net/madExceptDescription.htm

https://github.com/project-jedi/jvcl

https://en.wikipedia.org/wiki/Debugging_patterns

https://git-scm.com/docs/git-bisect

http://www.washi.cs.waseda.ac.jp/wp-content/uploads/2017/03/Woei-Kae-Chen.pdf

https://github.com/colinj/Functional

https://fsharpforfunandprofit.com/fppatterns/

https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms

Books & papers

Architectural Patterns, Pethuru Raj, Anupama Raman, Harihara Subramanian

Coding in Delphi, Nick Hodges

Concurrency with Modern C++, Rainer Grimm

Concurrent Patterns and Best Practices, Atul S. Khot

Dependency Injection in Delphi, Nick Hodges

Design Patterns for Humans, Kamran Ahmed

Design Patterns Past and Future, Aleksandar Bulajic

Design Patterns - Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Dive Into Design Patterns, Alexander Shvets

Java Design Patterns, Devendra Singh

More Coding in Delphi, Nick Hodges

The Null Object Pattern, Bobby Woolf

  • Like 8
  • Thanks 19

Share this post


Link to post

Excellent. Thanks a lot for posting.

BTW - also an excellent book.

Thanks a lot again for posting this links here.

:classic_cheerleader:

  • Like 2

Share this post


Link to post

The book is on my desktop, under the 70-762 Developing SQL Databases book.  I need to start reading.

  • Like 1

Share this post


Link to post
On 4/8/2019 at 11:07 PM, Primož Gabrijelčič said:

In case you would like to dig deeper than the book takes you, here is my reading list.

I like and use design patterns a lot. but there is one thing that bothers me: I can't remember all their names or I start confusing similar ones. Reading books avout them is like reading those books with hunderds of names in them. <g>

But seriously, that is why I always have big problems following discussions about them. I keep having to look up the patterns under discussion before I can say something.

 

FWIW, I have the same problems with dental and surgical instruments that are named after their inventors. These names do not tell what these intruments do at all. I almost always use their functional names instead.

Share this post


Link to post

Rudy, having read once upon a time one of your deep dives into Delphi datatypes (I think it was on floats or variants) it is hard to imagine for me that there is anything you cannot remember :-)

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×