2016-09-05 3 views
3

처음 로그인했을 때 API에서 여러 전역 설정을 가져올 프로그램이 있습니다.이 값은 프로그램 전체에서 광범위하게 사용됩니다. 현재 전역 변수에 저장하고 있지만 OOP가 아닌 것 같습니다.전역 변수의 대안

널리 사용되는 설정을 저장하기위한 전역 변수의 대안은 무엇입니까? 상수를 사용 하시겠습니까? 클래스 변수? API 호출을 통해 값을 초기화 할 수있는 곳은 어디일까요? 변수를 얻기 위해 클래스를 인스턴스화하는 몇 가지 예제를 보았지만 나에게별로 의미가 없습니다.

내가 로그인에 값을 설정하려는이 후 간단한 Global.myvalue 같은 표현이나 GLOBAL_MYVALUE

+0

및 이 질문을 단순한 목록 질문으로 만들려고 시도하는 질문. "최고"에 대한 요청이 아닙니다. 의견 질문은 여기에서 잘하지 않지만 목록이 너무 넓지 않다면 목록 질문은 괜찮을 수 있습니다. 전역 변수에 대한 대안이 너무 많아서 지금은 주제가 될만큼 좁은 것 같습니다. –

답변

1

불구하고 훨씬 더 나은 해결책이 될 것 같다 : 나는 제목 편집 한

https://ruby-doc.org/stdlib-2.1.0/libdoc/singleton/rdoc/Singleton.html

+0

나는 그것을 조사 해왔다. 그리고 나는 그것이 효과가있을 것이라고 생각한다. 속성을 정의하기 위해 API를 어디에서 호출해야합니까? 초기화 메서드에서? 또는 로그인 메소드의 수업 외부입니까? API 호출이 비동기임을 염두에 두십시오. – Augusto

+0

싱글 톤 패턴은 때때로 나쁜 랩을 가지며 많은 경우에 당연히 그렇습니다. 그러나 이것이 실제로 올바른 해결책 일 수있는 경우 중 하나입니다. – philomory

+0

@Augusto - 어디 있는지 잘 모르겠습니다. 비동기는 어려움을 더합니다. 계속하기 전에 설정을 완료하고 싶습니다. – seph

0

와 다른 곳에서 변수를 호출 그것은 당신에게 당신이 제공 한 정보를 기반으로 간결한 대답을하기 어렵다, 하지만 나는 모든 비용으로 전역 변수를 사용하는 것을 피할 것이다.

좋은 출발점은 이러한 변수를 사용하여 해당 클래스에 저장하는 모든 곳에서 공통 조상이 될 수있는 클래스를 생각하는 것입니다. 하위 클래스가 해당 클래스를 상속하는 경우 이러한 변수는 해당 컨텍스트에서 자동으로 사용할 수 있습니다.

편집 : @seph 게시처럼, 싱글 톤 패턴 싱글 톤 패턴이 편리 수 있습니다

+0

기본 클래스 사용을 권장하지 않습니다. Derivation은 여기에 존재하지 않는 "is-a"관계를 나타냅니다. 또한 Ruby는 다중 상속을 허용하지 않으므로 일단 설정 클래스에서 파생되면 다른 어떤 것도 파생시킬 수 없습니다. –