Difference between revisions of "DesignPatterns"

From Lost In Wonderlands
Jump to: navigation, search
(Creational Patterns)
(See also)
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
= Design Patterns =
 
= Design Patterns =
 
''by paul.plaquette, Senior Software Engineer, Trilda Open Source''
 
  
 
'''NeXT Steps'''
 
'''NeXT Steps'''
Line 19: Line 17:
  
 
== See also ==
 
== See also ==
 
+
* [https://en.wikipedia.org/wiki/Index_of_object-oriented_programming_articles Index_of_object-oriented_programming_articles]
 +
* [[SoftwareArchitecture]]
 
* [[DesignPatterns]]
 
* [[DesignPatterns]]
 
* [[AntiPatterns]]
 
* [[AntiPatterns]]
Line 38: Line 37:
 
== Design Patterns Catalog ==
 
== Design Patterns Catalog ==
  
=== Gang Of Four Pattern ===
+
=== Gang Of Four Patterns ===
  
 
* https://en.wikipedia.org/wiki/Design_Patterns
 
* https://en.wikipedia.org/wiki/Design_Patterns
 +
 +
Several implementation of Above design patterns in C++
 +
* https://github.com/BartVandewoestyne/Design-Patterns-GoF
 +
* https://github.com/zebmason/GoFRefactored/blob/master/README.md
 +
* http://www.informit.com/articles/article.aspx?p=1404056
 +
* https://www.infoq.com/presentations/gof-patterns-c-plus-plus-boost/
 +
* http://www.c-jump.com/CIS75/Week11/
 +
* http://www.c-jump.com/Download/Patterns/Prototype/html/
 +
* https://github.com/wangqiang8511/C---Design-Patterns-Examples/
  
 
==== Creational Patterns ====
 
==== Creational Patterns ====
Line 86: Line 94:
 
* https://en.wikipedia.org/wiki/Concurrency_pattern
 
* https://en.wikipedia.org/wiki/Concurrency_pattern
  
* Active Object
+
 
* Balking pattern
+
* Active Object, https://en.wikipedia.org/wiki/Active_object
* Barrier
+
* Asynchronous Method Invocation, https://en.wikipedia.org/wiki/Asynchronous_method_invocation
* Disruptor
+
* Balking pattern, https://en.wikipedia.org/wiki/Balking_pattern
* Double-checked locking
+
* Binding properties pattern, https://en.wikipedia.org/wiki/Binding_properties_pattern
* Guarded suspension
+
* Double Checked Locking Pattern, https://en.wikipedia.org/wiki/Double-checked_locking
 +
* Guarded suspension, https://en.wikipedia.org/wiki/Guarded_suspension
 +
* Join Pattern, https://en.wikipedia.org/wiki/Join-pattern
 
* Leaders/followers pattern
 
* Leaders/followers pattern
* Monitor Object
+
* Lock Pattern, https://en.wikipedia.org/wiki/Lock_(computer_science)
* Reactor pattern
+
* Monitor Object, https://en.wikipedia.org/wiki/Monitor_(synchronization)
* Read write lock pattern
+
* Proactor Pattern, https://en.wikipedia.org/wiki/Proactor_pattern
* Scheduler pattern
+
* Reactor pattern, https://en.wikipedia.org/wiki/Reactor_pattern
* Thread pool pattern
+
* Readers writers lock pattern, https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock
* Thread-local storage
+
* Scheduling pattern, https://en.wikipedia.org/wiki/Scheduling_(computing)
 +
* Thread pool pattern, https://en.wikipedia.org/wiki/Thread_pool
 +
* Thread-local storage, https://en.wikipedia.org/wiki/Thread-local_storage
 +
 
 +
 
 +
==== Architectural_pattern ====
 +
* https://en.wikipedia.org/wiki/Architectural_pattern
 +
 
 +
* Front Controller,  https://en.wikipedia.org/wiki/Front_controller
 +
* Interceptor Pattern, https://en.wikipedia.org/wiki/Interceptor_pattern
 +
* Model-View-Controller, https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
 +
* Multi-Tiers, https://en.wikipedia.org/wiki/Multitier_architecture
 +
* Specification Pattern, https://en.wikipedia.org/wiki/Specification_pattern
 +
* Publish-Subscribe Pattern, https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern
 +
* Naked Objects, https://en.wikipedia.org/wiki/Naked_objects
 +
* Service Locator Pattern, https://en.wikipedia.org/wiki/Service_locator_pattern
 +
* Active Record Pattern, https://en.wikipedia.org/wiki/Active_record_pattern
 +
* Identity Map Pattern, https://en.wikipedia.org/wiki/Identity_map_pattern
 +
* Inversion of Control, https://en.wikipedia.org/wiki/Inversion_of_control
 +
* Action-Domain-Responder, https://en.wikipedia.org/wiki/Action%E2%80%93Domain%E2%80%93Responder
 +
* Data Access Object, https://en.wikipedia.org/wiki/Data_access_object
 +
* Data Tranfer Object, https://en.wikipedia.org/wiki/Data_transfer_object
 +
* HightPerformance Data Access,  Layerhttp://rlacovara.blogspot.com/2009/02/high-performance-data-access-layer.html
 +
 
 +
===== Actor Model =====
 +
* Actor model
 +
** https://en.wikipedia.org/wiki/Actor_model
 +
** https://fr.wikipedia.org/wiki/Mod%C3%A8le_d%27acteur
 +
** https://www.brianstorti.com/the-actor-model/
 +
** https://dassur.ma/things/actormodel/
 +
** https://mattferderer.com/what-is-the-actor-model-and-when-should-you-use-it
 +
** https://monades.roperzh.com/get-to-know-the-actor-model/
 +
** https://www.techopedia.com/definition/25150/actor-model
 +
** https://www.youtube.com/watch?v=ELwEdb_pD0k
 +
** https://www.youtube.com/watch?v=lPTqcecwkJg
 +
** https://blog.soat.fr/2018/01/les-systemes-reactifs-et-le-pattern-actor-model/
 +
** https://doc.akka.io/docs/akka/current/general/actors.html
 +
** https://www.infoq.com/news/2014/10/intro-actor-model/
 +
** https://hal.archives-ouvertes.fr/hal-01163534v5/document
 +
** https://arxiv.org/ftp/arxiv/papers/1008/1008.1459.pdf
 +
** https://fr.slideshare.net/opencredo/haufe-msaday-the-actor-model-an-alternative-approach-to-concurrency-by-lorenzo-nicora
 +
* implementation
 +
** https://en.wikipedia.org/wiki/Actor_model_implementation
 +
** https://rocketeer.be/articles/concurrency-in-erlang-scala/
 +
** https://actor-framework.org
 +
* microsoft
 +
** https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-actors-introduction
 +
** https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/index
 +
** https://docs.microsoft.com/en-us/previous-versions/microsoft-robotics/bb648752(v=msdn.10)
 +
** https://docs.microsoft.com/en-us/previous-versions/microsoft-robotics/bb483056(v=msdn.10)
 +
** https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/dd492627(v=vs.100)
 +
 
 +
=== Other Patterns ===
 +
* Blackboard Pattern, https://en.wikipedia.org/wiki/Blackboard_(design_pattern)
 +
* Business Delegate Pattern, https://en.wikipedia.org/wiki/Business_delegate_pattern
 +
* Composite Entity Pattern, https://en.wikipedia.org/wiki/Composite_entity_pattern
 +
* Dependency Injection, https://en.wikipedia.org/wiki/Dependency_injection
 +
* Intercepting Filter Pattern, https://en.wikipedia.org/wiki/Intercepting_filter_pattern
 +
* Lazy Loading Pattern, https://en.wikipedia.org/wiki/Lazy_loading
 +
* Mock Objects Pattern, https://en.wikipedia.org/wiki/Mock_object
 +
* Null Objets Pattern, https://en.wikipedia.org/wiki/Null_Object_pattern
 +
* Object Pool Pattern, https://en.wikipedia.org/wiki/Object_pool_pattern
 +
* Servant Pattern, https://en.wikipedia.org/wiki/Servant_(design_pattern)
 +
* Twin Pattern, https://en.wikipedia.org/wiki/Twin_pattern
 +
* Type-Tunnel Pattern, https://en.wikipedia.org/wiki/Type_Tunnel_pattern
 +
* Game-Programming-Pattern, https://github.com/munificent/game-programming-patterns
  
 
=== Pattern-Oriented Software Architectures ===
 
=== Pattern-Oriented Software Architectures ===
Line 105: Line 180:
 
* Blackboard Pattern
 
* Blackboard Pattern
 
* Broker Pattern
 
* Broker Pattern
* Model-View-Controller Pattern
+
* Presenter First Pattern, https://en.wikipedia.org/wiki/Presenter_first_(software_approach)
* Presentation-Abstraction-Control Pattern
+
* Action-Domain-Responder, https://en.wikipedia.org/wiki/Action–domain–responder
 +
* Model-View-Controller Pattern, https://en.wikipedia.org/wiki/Model–view–controller
 +
* Model-View-ViewModel (aka model–view–binder), https://en.wikipedia.org/wiki/Model–view–viewmodel
 +
* Model-View-Presenter pattern, https://en.wikipedia.org/wiki/Model–view–presenter
 +
* Model-View-Adapater pattern, https://en.wikipedia.org/wiki/Model–view–adapter
 +
* Presentation-Abstraction-Control Pattern,  https://en.wikipedia.org/wiki/Presentation–abstraction–control
 +
* Hierarchical_model–view–controller Pattern, https://en.wikipedia.org/wiki/Hierarchical_model–view–controller
 
* Microkernel Pattern
 
* Microkernel Pattern
 
* Reflection Pattern
 
* Reflection Pattern
Line 117: Line 198:
 
* Client-Dispatcher-Server Pattern
 
* Client-Dispatcher-Server Pattern
 
* Publisher-Subscriber Pattern
 
* Publisher-Subscriber Pattern
 +
* NakedObjects, https://en.wikipedia.org/wiki/Naked_objects
 +
 +
== People ==
 +
* https://en.wikipedia.org/wiki/Christopher_Alexander
 +
* https://en.wikipedia.org/wiki/Erich_Gamma
 +
* https://en.wikipedia.org/wiki/Ralph_Johnson_(computer_scientist)
 +
* https://en.wikipedia.org/wiki/John_Vlissideshttps://en.wikipedia.org/wiki/John_Vlissides
 +
* https://en.wikipedia.org/wiki/Grady_Booch
 +
* https://en.wikipedia.org/wiki/Kent_Beck
 +
* https://en.wikipedia.org/wiki/Ward_Cunningham
 +
* https://en.wikipedia.org/wiki/Martin_Fowler
 +
* https://en.wikipedia.org/wiki/Robert_Cecil_Martin
 +
* https://en.wikipedia.org/wiki/Jim_Coplien
 +
* https://en.wikipedia.org/wiki/Douglas_C._Schmidt
 +
* https://en.wikipedia.org/wiki/Linda_Rising
 +
  
 
== References ==
 
== References ==
  
* https://en.wikipedia.org/wiki/Architectural_pattern
+
* http://archive.oredev.org/download/18.5bd7fa0510edb4a8ce4800019179/Bruce_Douglass_-_Realtime_design_Patterns.pdf
 +
* https://en.wikipedia.org/wiki/The_Hillside_Group
 +
* https://en.wikipedia.org/wiki/Portland_Pattern_Repository
 +
* http://c2.com/cgi/wiki?WelcomeVisitors
 +
* http://c2.com/cgi/wiki?HillsideGroup
 
* http://sourcemaking.com/
 
* http://sourcemaking.com/
 
* http://shichuan.github.com/javascript-patterns/
 
* http://shichuan.github.com/javascript-patterns/
Line 135: Line 236:
 
* https://delphipatterns.codeplex.com/
 
* https://delphipatterns.codeplex.com/
  
 +
== Books ==
 
* Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Nov 10, 1994)
 
* Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Nov 10, 1994)
 
* Design Pattern Explained, A New Persective on Object-Oriented Design, Alan Shalloway, James Trott,  Addison-Wesley, 1st Edition(July 9, 2001), 2nd Edition (October 22, 2004)
 
* Design Pattern Explained, A New Persective on Object-Oriented Design, Alan Shalloway, James Trott,  Addison-Wesley, 1st Edition(July 9, 2001), 2nd Edition (October 22, 2004)
Line 142: Line 244:
 
* Antipatterns, Identification, Refactoring, and Management, Philip A. Laplante, Clin J.Neill, Auerbach Publications (2006)
 
* Antipatterns, Identification, Refactoring, and Management, Philip A. Laplante, Clin J.Neill, Auerbach Publications (2006)
 
* Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant, William Opdyke, don Roberts, Addison-Wesley Professional, 1 edition (July 8, 1999)
 
* Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant, William Opdyke, don Roberts, Addison-Wesley Professional, 1 edition (July 8, 1999)
 +
 +
http://www.eventhelix.com/RealtimeMantra/Patterns/#.VuSjttwrKkA

Latest revision as of 21:50, 20 October 2019

Design Patterns

NeXT Steps

 here everything has yet to be done !
 collecting more design pattern in the catalog
 creating the template page for a design pattern
 creating a card for each


coming soon :

Everything You Always Wanted to Know About Design Patterns... (But Were Afraid to Ask)


See also


Design Patterns Catalog

Gang Of Four Patterns

Several implementation of Above design patterns in C++

Creational Patterns


Structural Patterns


Behavioral Patterns


Concurrency Patterns



Architectural_pattern

Actor Model

Other Patterns

Pattern-Oriented Software Architectures

People


References

Books

  • Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Nov 10, 1994)
  • Design Pattern Explained, A New Persective on Object-Oriented Design, Alan Shalloway, James Trott, Addison-Wesley, 1st Edition(July 9, 2001), 2nd Edition (October 22, 2004)
  • Professional (July 9, 2001), and second edition
  • Pattern-Oriented Software Architecture, Wiley, Vol 1 - 5
  • Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems, Bruce Powel Douglass, Addison Wesley (September 27,2002)
  • Antipatterns, Identification, Refactoring, and Management, Philip A. Laplante, Clin J.Neill, Auerbach Publications (2006)
  • Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant, William Opdyke, don Roberts, Addison-Wesley Professional, 1 edition (July 8, 1999)

http://www.eventhelix.com/RealtimeMantra/Patterns/#.VuSjttwrKkA