Presentation on how to chat with PDF using ChatGPT code interpreter
Design Pattern From Java To Ruby
1. Design Pattern
-- from Java to Ruby
Richard
Ekohe
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
2. Why use Design Pattern
For reuse
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
3. Why use Design Pattern
For communication
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
4. Why use Design Pattern
Define a Node interface, all of leaf nodes and
internal nodes should implements the
interface, internal nodes has a list that
For communication includes other internal nodes and leaf nodes
and it can add and remove sub-nodes. But
leaf node can’t have add sub-node method.
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
5. Why use Design Pattern
Define a Node interface, all of leaf nodes and
internal nodes should implements the
interface, internal nodes has a list that
For communication includes other internal nodes and leaf nodes
and it can add and remove sub-nodes. But
leaf node can’t have add sub-node method.
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
6. Why use Design Pattern
Define a Node interface, all of leaf nodes and
internal nodes should implements the
interface, internal nodes has a list that
For communication includes other internal nodes and leaf nodes
and it can add and remove sub-nodes. But
leaf node can’t have add sub-node method.
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
7. Why use Design Pattern
For communication
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
8. Why use Design Pattern
For communication
Composite
Pattern
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
9. Why use Design Pattern
For communication
Composite
Pattern
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
10. Difference from java to ruby
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
11. Difference from java to ruby
Classes are Objects
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
12. Difference from java to ruby
Classes are Objects
Messages, not function call
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
13. Difference from java to ruby
Classes are Objects
Messages, not function call
Duck Typing
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
14. Difference from java to ruby
Classes are Objects
Messages, not function call
Duck Typing
Mixin
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
15. Singleton Pattern
ensures a class has only one instance, and
provides a global point of access to it
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
17. Singleton Pattern
You are my
only wife
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
18. Singleton Pattern
You are my
You are my
only husband
only wife
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
19. Singleton Pattern -- java
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
20. Singleton Pattern -- java
Eager loading
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
21. Singleton Pattern -- java
Eager loading
Lazy loading
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
22. Singleton Pattern -- ruby
Ruby built-in singleton
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
23. Singleton Pattern -- ruby
Ruby built-in singleton
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
24. www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
25. www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
26. www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
27. www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
28. www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
29. Ruby for Design Pattern
Built-in (Singleton)
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
30. 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.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
31. Observer Pattern
Subscribe
Temperature
Detector
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
32. Observer Pattern
Subscribe
Temprature
Temperature
changed
Detector
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
33. Observer Pattern
Notify Notify
Subscribe
Temprature
Temperature
changed
Detector
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
34. Observer Pattern -- java
Define interface by yourself
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
35. Observer Pattern -- java
Define interface by yourself
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
36. Observer Pattern -- java
Define interface by yourself
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
37. Observer Pattern -- java
Define interface by yourself
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
38. Observer Pattern -- java
Define interface by yourself
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
39. Observer Pattern -- java
Define interface by yourself
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
40. Observer Pattern -- java
Java built-in observer
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
41. Observer Pattern -- java
Java built-in observer
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
42. Observer Pattern -- ruby
Ruby built-in observer
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
43. Observer Pattern -- ruby
Ruby built-in observer
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
44. Observer Pattern -- ruby
Ruby built-in observer
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
45. www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
46. www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
47. www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
48. Ruby for Design Pattern
Built-in (Singleton, Observer)
Mixin
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
49. Iterator Pattern
provides a way to access the elements of an
aggregate object sequentially without exposing
its underlying representation
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
50. Iterator Pattern
Count 1 2 3 10
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
51. Iterator Pattern -- java
Java built-in Iterator and mock Iterator
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Merb - Offshore Web Development
52. Iterator Pattern -- java
Java built-in Iterator and mock Iterator
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Merb - Offshore Web Development
53. Iterator Pattern -- java
Java built-in Iterator and mock Iterator
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Merb - Offshore Web Development
54. Iterator Pattern -- java
Java built-in Iterator and mock Iterator
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Merb - Offshore Web Development
55. Iterator Pattern -- ruby
Nothing, just .each
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
56. Iterator Pattern -- ruby
Nothing, just .each
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
57. Iterator Pattern -- ruby
Nothing, just .each
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
58. Ruby for Design Pattern
Built-in (Singleton, Observer, Iterator)
Mixin
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
59. Simple Factory Pattern
returns an instance of one of several possible
classes, depending on the data provided to it.
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
60. Simple Factory Pattern
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
61. Simple Factory Pattern -- java
Compare with String, a lot of if/else
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
62. Simple Factory Pattern -- java
Compare with String, a lot of if/else
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
63. Simple Factory Pattern -- java
Compare with String, a lot of if/else
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
64. Simple Factory Pattern -- java
Compare with String, a lot of if/else
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
65. Simple Factory Pattern -- java
Compare with String, a lot of if/else
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
66. Simple Factory Pattern -- java
Compare with String, a lot of if/else
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
67. Simple Factory Pattern -- ruby
Classes are Objects
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
68. Simple Factory Pattern -- ruby
Classes are Objects
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
69. Simple Factory Pattern -- ruby
Classes are Objects
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
70. Simple Factory Pattern -- ruby
Classes are Objects
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
71. Ruby for Design Pattern
Built-in (Singleton, Observer, Iterator)
Mixin
Classes are Objects
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
72. Command Pattern
encapsulates a request as an object, thereby
letting you parameterize clients with different
requests, queue or log requests, and support
undoable operations.
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
74. Command Pattern -- java
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
75. Command Pattern -- java
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
76. Command Pattern -- java
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
77. Command Pattern -- java
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
78. Command Pattern -- java
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
79. Command Pattern -- ruby
Proc
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
80. Command Pattern -- ruby
Proc
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
81. Ruby for Design Pattern
Built-in (Singleton, Observer, Iterator)
Mixin
Classes are Objects
Proc
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
82. Other Design Patterns
Make use of ruby advantage
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
84. Ruby's Principle
DRY – Don't Repeat Yourself
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
85. Ruby's Principle
DRY – Don't Repeat Yourself
Convention Over Configuration
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
86. 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.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development
87. Q&A
happy to discuss and fix my mistakes
www.ekohe.com
Web Development & Graphic Design
China Ruby on Rails Development - Rails Consulting - Rails Services - Merb - Offshore Web Development