Skip to content

Instantly share code, notes, and snippets.

@Sihui
Created August 6, 2017 15:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sihui/0d4b9797c25d57eb911ac1957188e901 to your computer and use it in GitHub Desktop.
Save Sihui/0d4b9797c25d57eb911ac1957188e901 to your computer and use it in GitHub Desktop.
Design Pattern: State and Combination Locks
class EnteredWrongPinState
attr_reader :lock, :state_name
def initialize(lock)
@lock = lock
@state_name = 'Entered Wrong Pin State'
end
def dial_to(number)
puts "The lock is in #{state_name}. Dial does nothing."
end
def clear
lock.state = lock.cleared_state
end
def pull_to_open
puts 'The lock is still locked'
puts " currently in #{state_name}"
end
def push_to_lock
puts 'The lock is already locked'
puts " currently in #{state_name}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment