Podcast: Play in new window | Download
Subscribe: Apple Podcasts | Spotify | TuneIn | RSS
We’re back to the gang of four, continuing with another segment of design patterns. This time we’re talking about some of our favorite Behavioral Design Patterns: Observer, Chain of Responsibilities, Iterator patterns. Also, why the visitor pattern is weird and what it’s like to be raked over hot coals.
News
- Atlanta Code Camp was amazing – $10 for all of this!
- AngularJS is HUGE, despite the recent controversy
- Ionic – Cross platform mobile development
- Bang Bang Javascript – Reddit will beat you up
- Codecademy – very cool way of learning new programming skills!
- The visitor pattern is wha,cray,wei@$@af–,what?
The Observer Pattern
- Abstracts message senders and receivers from each other
- Watch out for memory leaks!
- Be careful with abstraction layer hopping and event overloading!
- Examples in .NET
Chain of Responsibilities
- Examples in .NET
- Exceptions – Sorta
- HTTP Handlers – Sorta
- MVC Routing – Sorta
- Decouples the sender from the receiver – allows more than one object a chance to handle it
- Differences between Chain of Responsibilities and Intercepting Filters Patterns
- Differences between Chain of Responsibilities and Observer Patterns
Iterator Pattern
- Decouples algorithms from containers – good for data structures…but especially for sequences, algorithms
- When to use it:
- Sequentially traverse a collection
- Decouple the traversal logic/algorithm from the container
- Dealing w/ sequences – like weird enumerations! Fibonacci sequence
- Examples in .NET
- foreach (operates on IEnumerable types)
- LINQ
- yield keyword
- IEnumerable – aggregate/collection/container interface
- IEnumerator – iterator interface returned from IEnumerable
- Iterators tracks it’s state internally, so beware of concurrency / parrallelization issues
Resources we like
Tips / Tricks
- Rextester Share code Snippets in the browser
- The Postman – Test REST in Chrome
- jsPerf – Performance testing for Javascript
Thanks for listening!