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
단순 공장 모델 에 비해 이곳 의 변 화 는 공장 류 를 제거 한 것 이 고,대신 구체 적 인 연산 공장 은 덧셈 공장,뺄셈 공장,곱셈 공장 과 나눗셈 공장 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ruby의 단일 메소드 및 단일 클래스 상세 정보단일 방법 Ruby는 단일 객체에만 적용되는 단일 객체 추가 방법을 단일 방법이라고 합니다. 또한 위에서 사용한 정의 방법 외에 Object#define_를 통해singleton_method 방법으로 단일 방법 정의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.