관련 검색을위한 필터를 표시하는 화면이있는 iOS 응용 프로그램을 개발 중입니다. 이제는 모든 필터가 사용자 정의 UIView로 변경되었습니다. 모든 UI가 상당히 다르기 때문에 다른 화면에서 다시 사용해야하기 때문입니다. 그들의 차이점을 생각해 보면 View Controller에 대한 공통 인터페이스를 관리하는 View Controller에 표시되므로 View Controller는 filterView가 무엇을 어떻게하는지와 관계가 없습니다. 이는 일부 데이터를 전달하고 모든 데이터를 공유하는 속성을 통해 상태를 검색하는 것과 관련이 있습니다. 그들은 모두 UIView의 하위 클래스 인 FilterView의 하위 클래스 인 다른 클래스를 가지고 있습니다. 이 FilterView 클래스는 이러한 모든 하위 클래스가 채택하는 인터페이스를 제공합니다.서브 클래스 또는 프로토콜, 방법?
이 방법론은 정상적으로 작동하지만 filterView에서 제공해야하는 모든 메서드와 속성은 기본 클래스 인 FilterView에서 선언되고 일부 특정 필터는 동작을 구현하지 않으면 해당 동작은 기본적으로 해당 동작에 의해 제공됩니다. 슈퍼 클래스 FilterView. 나는 이것을 원하지 않는다. 모든 FilterView 서브 클래스는 FilterView API에서 구현을 제공하거나 그렇지 않으면 수퍼 클래스의 기본값이 아닌 자신의 기본값을 제공해야합니다.
나는 또한 요구 사항입니다 수 UIViews을 강제적으로 이러한 모든 클래스 나는 능력을 잃어이 동작을 구현하는 프로토콜을 사용하는 경우.
당신은 내가 더 잘 모든 다른 FilterView 서브 클래스를 관리하는 데 사용한다 어떤 디자인 패턴을 제안 할 수 있습니다. 모든 필터 개체보다는 명시 적으로 하나 되 UIView
를 제공 할 필요가 있다고 생각하면
http://stackoverflow.com/a/1034464/2518285- "추상 클래스가 실제로 인터페이스 (예 : 구체적인 구현 방법이 없음) Objective-C 프로토콜을 사용하는 것이 더 적절한 옵션입니다. " –
http://stackoverflow.com/a/11145006/2518285 –