design pattern from java to ruby
DESCRIPTION
published by Richard of EkoheTRANSCRIPT
![Page 1: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/1.jpg)
Design Pattern -- from Java to Ruby
Richard
Ekohe
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 2: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/2.jpg)
Why use Design Pattern
For reuse
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 3: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/3.jpg)
Why use Design Pattern
For communication
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Define a Node interface, all of leaf nodes and internal nodes should
implements the interface, internal nodes has a list that includes other internal nodes and leaf
nodes and it can add sub-nodes. But leaf node can’t have add sub-
node method.
Multi-level Menus?
![Page 4: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/4.jpg)
Why use Design Pattern
For communication
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Composite
PatternMulti-level Menus?
![Page 5: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/5.jpg)
Difference from java to ruby
Classes are Objects
Messages, not function call
Duck Typing
Mixin
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 6: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/6.jpg)
Singleton Pattern
ensures a class has only one instance, and provides a global point of access to it
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 7: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/7.jpg)
Singleton Pattern
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
You are my only wife
You are my only husband
![Page 8: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/8.jpg)
Eager loading
Lazy loading
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Singleton Pattern -- java
![Page 9: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/9.jpg)
Ruby built-in singleton
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Singleton Pattern -- ruby
![Page 10: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/10.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 11: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/11.jpg)
Built-in (Singleton)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Ruby for Design Pattern
![Page 12: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/12.jpg)
Observer Pattern
defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 13: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/13.jpg)
Observer Pattern
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Temperature
Detector
Subscribe
Notify Notify
Tempraturechanged
![Page 14: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/14.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Observer Pattern -- java
![Page 15: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/15.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Observer Pattern -- java
![Page 16: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/16.jpg)
Java built-in observer
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Observer Pattern -- java
![Page 17: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/17.jpg)
Ruby built-in observer
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Observer Pattern -- ruby
![Page 18: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/18.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 19: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/19.jpg)
Built-in (Singleton, Observer)
Mixin
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Ruby for Design Pattern
![Page 20: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/20.jpg)
Iterator Pattern
provides a way to access the elements of an aggregate object sequentially without exposing its underlying representation
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 21: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/21.jpg)
Iterator Pattern
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Count
1 2 3 10
![Page 22: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/22.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Merb - Offshore Web Development
Iterator Pattern -- java External Iterator
![Page 23: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/23.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Merb - Offshore Web Development
Iterator Pattern -- java Internal Iterator
![Page 24: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/24.jpg)
Internal Iterator .each
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Iterator Pattern -- ruby
![Page 25: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/25.jpg)
Built-in (Singleton, Observer, Iterator)
Mixin
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Ruby for Design Pattern
![Page 26: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/26.jpg)
returns an instance of one of several possible classes, depending on the data provided to it.
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Simple Factory Pattern
![Page 27: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/27.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Simple Factory Pattern
![Page 28: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/28.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Simple Factory Pattern -- java
![Page 29: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/29.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Simple Factory Pattern -- java
![Page 30: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/30.jpg)
Classes are Objects
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Simple Factory Pattern -- ruby
![Page 31: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/31.jpg)
Built-in (Singleton, Observer, Iterator)
Mixin
Classes are Objects
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Ruby for Design Pattern
![Page 32: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/32.jpg)
encapsulates a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Command Pattern
![Page 33: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/33.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Command Pattern
Increase temperature
command
Decrease temperature
command
![Page 34: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/34.jpg)
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Command Pattern -- java
![Page 35: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/35.jpg)
Proc
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Command Pattern -- ruby
![Page 36: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/36.jpg)
Built-in (Singleton, Observer, Iterator)
Mixin
Classes are Objects
Proc
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Ruby for Design Pattern
![Page 37: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/37.jpg)
Make use of ruby advantage
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
Other Design Patterns
![Page 38: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/38.jpg)
Principle
DRY – Don't Repeat Yourself
Convention Over Configuration
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 39: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/39.jpg)
Resources
Design Pattern – Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Head First Design Pattern
Kathy Sierra, Bert Bates
Design Pattern in Ruby
Russ Olsen
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
![Page 40: Design Pattern From Java To Ruby](https://reader036.vdocuments.us/reader036/viewer/2022062312/5554efcab4c905bb2a8b4d36/html5/thumbnails/40.jpg)
Q&A
happy to discuss and fix my mistakes
www.ekohe.comWeb Development & Graphic DesignChina Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development