Design pattern

Command模式它封装的是命令,把命令发出者的责任和命令执行者的责任分开。

ror中的数据迁移就是用他

  
  
  
  
  1. class Command 
  2.   attr_reader :description 
  3.   def initialize(description) 
  4.     @description = description 
  5.   end 
  6.   def execute 
  7.     raise "wrong" 
  8.   end 
  9. end 
  10.  
  11. class CreateFile < Command 
  12.   def initialize(file_name) 
  13.     super("create file : #{file_name}"
  14.   end 
  15.   def execute 
  16.     puts "create file" 
  17.   end 
  18.   def unexecute 
  19.     puts "deleting created file" 
  20.   end 
  21. end 
  22. class CopyFile < Command 
  23.   def initialize(file_name) 
  24.     super ("copy file : #{file_name}"
  25.   end 
  26.   def execute 
  27.     puts "copy file" 
  28.   end 
  29.   def unexecute 
  30.     puts "deleting copied file" 
  31.   end 
  32. end 
  33.  
  34. class CompositedCommand < Command 
  35.   def initialize 
  36.     @commands = [] 
  37.   end 
  38.   def add_command(cmd) 
  39.     @commands << cmd 
  40.   end 
  41.   def execute 
  42.     @commands.each { |cmd| cmd.execute } 
  43.   end 
  44.   def unexecute 
  45.     @commands.each { |cmd| cmd.unexecute } 
  46.   end 
  47.  
  48.   def description 
  49.     description = "" 
  50.     @commands.each { |cmd| description += cmd.description + "\n"
  51.     description 
  52.   end 
  53. end 
  54.  
  55. cmds = CompositedCommand.new 
  56. cmds.add_command(CreateFile.new("file"))  #点菜  命令请求者 命令执行者 
  57. cmds.add_command(CopyFile.new("file")) 
  58. puts cmds.description 
  59.  
  60. cmds.execute 

 

你可能感兴趣的:(command,职场,design,休闲)