Skip to content

Instantly share code, notes, and snippets.

@joseluistorres
Last active December 23, 2015 03:49
Show Gist options
  • Save joseluistorres/6576378 to your computer and use it in GitHub Desktop.
Save joseluistorres/6576378 to your computer and use it in GitHub Desktop.
Ejemplo Single Responsibility
class Hurricane
def initialize(latitud, longitud, lluvia, marejadas)
@latitud = latitud
@longitu = longitud
@lluvia = lluvia
@marejadas = marejadas
end
def afectar_localidad(latitud, longitud)
@latitud = latitud
@longitud = longitud
if @lluvia
puts "----------LLUEVE HARTAMENT----------"
end
if @marejadas
puts "_-_-_-_-_-_-_-_-_-_-_-_-MUCHAS OLAS_-_-_-_-_-_-_-_-"
end
end
end
Hurricane.new(10,20, true, true).afectar_localidad(20,30)
# ========================================================================
# Ejemplo refactorizado v1
class Posicion
attr_reader :lat, :lon
def initialize(lat, lon)
@lat = lat
@lon = lon
end
end
class Huracan
attr_reader :posicion
def initialize(posicion, lluvia, marejadas)
@posicion = posicion
@lluvia = lluvia
@marejadas = marejadas
end
def afectar_localidad(nueva_posicion)
mover_huracan(nueva_posicion)
llovera_o_no
se_lleva_ramadas_o_no
end
def mover_huracan(nueva_posicion)
posicion.lat = nueva_posicion.lat
posicion.lon = nueva_posicion.lon
end
def llovera_o_no
puts "----------LLUEVE HARTAMENTE----------" if @lluvia
end
def se_lleva_ramadas_o_no
puts "_-_-_-_-_-_-_-_-_-_-_-_-MUCHAS OLAS_-_-_-_-_-_-_-_-" if @marejadas
end
end
Huracan.new(Posicion.new(10,20), true, true).afectar_localidad(Posicion.new(20,30))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment