Ruby 에서 디자인 모델 중의 간단 한 공장 모델 과 공장 방법 모델 을 사용 합 니 다.

3287 단어 Ruby디자인 모드
전에'루비 디자인 모드'를 본 적 이 있 었 는데 점점 잊 어 버 렸 어 요.지금 은 큰소리 디자인 모델 을 샀 는데 그렇게 지루 해 보이 지 않 고 코드 를 ruby 로 구현 했다.
단순 공장 모드:

# -*- encoding: utf-8 -*-

#   
class Operation
 attr_accessor :number_a,:number_b
 
 def initialize(number_a = nil, number_b = nil)
  @number_a = number_a
  @number_b = number_b
 end
 
 def result
  0
 end
end

#   
class OperationAdd < Operation
 def result
  number_a + number_b
 end
end

#   
class OperationSub < Operation
 def result
  number_a - number_b
 end
end

#   
class OperationMul < Operation
 def result
  number_a * number_b
 end
end

#   
class OperationDiv < Operation
 def result
  raise '     0' if number_b == 0 
  number_a / number_b
 end
end

#   
class OperationFactory
 def self.create_operate(operate)
  case operate
  when '+'
   OperationAdd.new()
  when '-'
   OperationSub.new()
  when '*'
   OperationMul.new()
  when '/'
   OperationDiv.new()
  end
 end
end

oper = OperationFactory.create_operate('/')
oper.number_a = 1
oper.number_b = 2
p oper.result

이렇게 쓰 는 장점 은 결합 을 낮 추 는 것 이다.
예 를 들 어 뿌리 번호 연산 을 추가 할 때 공장 류 에 하나의 가 지 를 추가 하고 뿌리 번호 류 를 새로 만 들 면 다른 종 류 를 움 직 이지 않 습 니 다.
공장 방법 모드:

# -*- encoding: utf-8 -*-

#   
class Operation
 attr_accessor :number_a,:number_b
 
 def initialize(number_a = nil, number_b = nil)
  @number_a = number_a
  @number_b = number_b
 end
 
 def result
  0
 end
end

#   
class OperationAdd < Operation
 def result
  number_a + number_b
 end
end

#   
class OperationSub < Operation
 def result
  number_a - number_b
 end
end

#   
class OperationMul < Operation
 def result
  number_a * number_b
 end
end

#   
class OperationDiv < Operation
 def result
  raise '     0' if number_b == 0 
  number_a / number_b
 end
end


module FactoryModule
 def create_operation
 end
end
#    
class AddFactory
 include FactoryModule
 
 def create_operation
  OperationAdd.new
 end 
end

#    
class SubFactory
 include FactoryModule
 
 def create_operation
  OperationSub.new
 end
end
#    
class MulFactory
 include FactoryModule
 
 def create_operation
  OperationMul.new
 end 
end
#    
class DivFactory
 include FactoryModule
 
 def create_operation
  OperationDiv.new
 end 
end

factory = AddFactory.new
oper = factory.create_operation
oper.number_a = 1
oper.number_b = 2
p oper.result

단순 공장 모델 에 비해 이곳 의 변 화 는 공장 류 를 제거 한 것 이 고,대신 구체 적 인 연산 공장 은 덧셈 공장,뺄셈 공장,곱셈 공장 과 나눗셈 공장 이다.

좋은 웹페이지 즐겨찾기