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
Computer Science Design Patterns
Design Patterns with examples in different languages (including Delphi)
Gang of Four Design Patterns Reference Sheet
Design principles and design patterns
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
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://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
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
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-differhttps://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
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
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://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
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
Dive Into Design Patterns, Alexander Shvets
Java Design Patterns, Devendra Singh
No comments:
Post a Comment