2015-01-29 2 views
0

프로그램을 작성할 때 소유자 클래스를 사용하여 생성 된 클래스에서 일어나는 일을 제어하고 관리하려고하는 동일한 도전에 맞서 계속 노력하지만 전 철학과는 거리가 멀다 고 느낍니다. .소유자 클래스를 사용하는 최선의 방법

예를 들어 직렬 포트 클래스가있는 장치 클래스를 만들 수 있습니다. 나는 다른 부분 응용 프로그램이 직렬 포트 클래스를 직접 사용하기를 원하지만 직렬 포트 클래스가 작동하려면 장치 클래스의 메서드를 호출해야하지만 nessersarally 메서드는 public이 아니길 바랄 것이다.

대해 갈이 더 나은 방법이 있습니까이

+0

직렬 포트를 관리하는 클래스를 만들어야합니다. Device 클래스와 다른 클래스는 그 클래스와 통신 할 수 있습니다. SerialPort 클래스는 송수신 할 것에주의를 기울여야한다. – RvdK

답변

0

먼저 SerialPort 클래스는 잘못된 구현을 소유자에게 직접 호출해서는 안됩니다. DeviceClass에 의해 구현 된 SerialPort 클래스 용 ISerialPort와 같은 인터페이스를 사용하십시오. DeviceClass는 SerialPort 클래스를 private로 생성하고 인터페이스를 노출합니다. DeviceClass의 인터페이스 구현은 SerialPort 인스턴스에 Device에 대해 개인적인 필수 정보를 제공하는 SerialPort에 대한 통신을 가로 채고 수행합니다. 따라서 SerialPort에 대한 모든 통신은 Device에 의해 간접적으로 처리됩니다.

+0

감사합니다. 이것은 Device 클래스의 부분 클래스 내에서 SerialPort의 중첩 클래스를 만드는 방식과 매우 흡사합니다. SerialPort 클래스는 ISerialPort 인터페이스를 통해 노출됩니다. 나는 전체적인 중첩 된 클래스 접근에 대해 걱정하고 있었다고 생각합니다. – Jamie

0

공공 초기화() 메소드 가능성이 유연하게 (선택 사항) 매개 변수를 사용하여, 장치 클래스의 모든 필요한 개인 메소드를 호출합니다. 이 Init 메소드는 직렬 포트 클래스를 사용/초기화합니다.

일반적인 방법으로 장치 클래스를 사용할 수 있습니다. 즉 공용 메서드를 사용하여 정보를 가져 오거나 보낼 수 있습니다. 직렬 포트 클래스의 메서드를 호출 할 수도 있지만 장치 클래스의 호출자는 알 수 없습니다 이.

관련 문제