두 부분으로 된 질문이 있습니다
모범 사례
- 공용 인터페이스를 사용하여 데이터 구조에서 일부 작업을 수행하는 알고리즘이 있습니다.
- 현재 하나의 공용 인터페이스 메서드를 제외하고 모두 전용 인 수많은 정적 메서드가있는 모듈입니다.
- 모든 메소드간에 공유해야하는 인스턴스 변수가 하나 있습니다.
다음은 내가 볼 수있는 옵션이며 가장 좋은 것은 무엇입니까? :
- 모듈 정적 (루비 '모듈')와 방법
- 정적 메서드가있는 클래스
- 데이터 구조에 포함하기위한 Mixin 모듈
- 해당 데이터 구조 (매우 작음)를 수정하는 알고리즘 부분을 리팩터링 하고 알고리즘 모듈의 정적 메서드를 호출하는 믹스 인으로 만듭니다.
기술 부분
private Module 메서드 를 만드는 방법이 있습니까?
module Thing
def self.pub; puts "Public method"; end
private
def self.priv; puts "Private method"; end
end
private
거기에는 어떤 영향을 미칠 것 같지 않습니다 난 여전히 호출 할 수 있습니다, Thing.priv
문제없이.
private
클래스 메서드가 아닌 인스턴스 메서드에만 영향을줍니다. 사용하는 private_class_method
대신 :module Thing; def self.pub; end; private_class_method :pub; end