Skip to content

Instantly share code, notes, and snippets.

View Sihui's full-sized avatar

Sihui Huang Sihui

View GitHub Profile
@Sihui
Sihui / netflix_movies.rb
Last active August 4, 2017 07:22
Design Pattern: Iterator and Movie Collections
netflix_movies = [
{
title: 'Train to Busan',
year: '2016',
director: 'Yeon Sang-ho',
genre: 'Drama film/Disaster Film',
length: '1h 58m'
},
{
title: 'The Big Short',
@Sihui
Sihui / 1-click.rb
Last active August 3, 2017 05:28
Design Pattern: Facade and 1-Click Ordering
class OneClickCheckout
attr_reader :checkout_process, :default_address, :default_payment
def initialize(order, default_address, default_payment)
@checkout_process = CheckoutProcess.new(order)
@default_address = default_address
@default_payment = default_payment
end
def click
@Sihui
Sihui / order.rb
Last active August 3, 2017 05:30
Design Pattern: Facade and 1-Click Ordering
class Order
attr_accessor :shipping_address, :payment_method, :items
def initialize(items)
@shipping_address = nil
@payment_method = nil
@items = items
end
def confirm
@Sihui
Sihui / checkout_process.rb
Last active August 3, 2017 05:04
Design Pattern: Facade and 1-Click Ordering
class CheckoutProcess
attr_reader :order
def initialize(order)
@order = order
end
def set_shipping_address(address)
order.shipping_address = address
end
@Sihui
Sihui / c2a_adapter.rb
Created August 2, 2017 04:45
Design Pattern: Adapter and Power Adapter
class C2AAdapter
attr_reader :type_c_outlet
def initialize(type_c_outlet)
@type_c_outlet = type_c_outlet
end
def type_a_elec
"converting #{type_c_outlet.type_c_elec}"
# some electric circuit conversion
@Sihui
Sihui / type_c_outlet.rb
Last active August 2, 2017 04:43
Design Pattern: Adapter and Power Adapter
class TypeCOutlet
def type_c_elec
'2.5A electricity'
end
def type_c_voltage
'220-240 voltages'
end
end
@Sihui
Sihui / type_a_plug.rb
Last active October 26, 2017 00:46
Design Pattern: Adapter and Power Adapter
class TypeAPlug
attr_accessor :electricity, :voltage
def initialize
@electricity = nil
@voltage = nil
end
def plug_into(outlet)
self.electricity = outlet.type_a_elec
@Sihui
Sihui / service_panel.rb
Created July 28, 2017 04:48
Design Pattern: Command and Hotel Service
class ServicePanel
attr_reader :button_a1, :button_a2, :button_b1, :button_b2
def initialize(a1_service, a2_service,
b1_service, b2_service)
@button_a1 = Button.new(a1_service)
@button_a2 = Button.new(a2_service)
@button_b1 = Button.new(b1_service)
@button_b2 = Button.new(b2_service)
end
@Sihui
Sihui / spa_service.rb
Last active July 28, 2017 04:27
Design Pattern: Command and Hotel Service
class SpaReservationService
attr_reader :data, :spa_center
def initialize(data)
@data = data
@spa_center = SpaCenter.new
end
def execute
spa_center.reserve(data)
@Sihui
Sihui / concierge_v2.rb
Last active October 11, 2017 23:10
Design Pattern: Command and Hotel Service
class Concierge
attr_reader :request_list
def initialize
@request_list = []
end
def act_on_requests
@request_list.each do |request|
request.execute