40
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

Design Pattern From Java To Ruby

Embed Size (px)

DESCRIPTION

published by Richard of Ekohe

Citation preview

Page 1: Design Pattern    From Java To Ruby

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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