私はQuizlet API
とやりとりしています。私は自分のコードを構造化する最良の方法を議論してきました。 Quizlet APIには、Sets
,Classes
、User
などの複数の機能があります。私はこのためにAPIClients
を作成しようとしていますが、私はクライアントをモデリングするためのより良いソリューションを見つけたり、これらの潜在的なソリューションの中から最良のソリューションを選択するのに苦労してきました。サブクラスvsエクステンションvsインナークラス
解決方法1: はsuperclass
と呼ばれるQuizletManager
を作成し、すべてのサブクラス全体に便利ですclientID
、access codes
などの基本情報、および関連情報を格納します。次に、QuizletSet
、QuizletClass
などの個別のsubclasses
を作成して、セット、クラス、および関連情報の取得を処理できます。実際にデータを取得する必要があるときは、恐らくQuizletManager
と呼ぶことはありません。しかし、私はQuizletSet
の新しいインスタンスと関連するクラスを作成してネットワーキングを行います。
解決方法2: その関連サブクラスのすべてに再びQuizletManager
スーパークラスを作成します。しかし、今回は、Setに関連するすべてのサブクラスとそのすべてをQuizletManager
クラスでインスタンス化し、情報を取得するときにサブクラスを呼び出すQuizletManager
内のメソッドを使用しました。 この場合、私はいつもQuizletManager
とQuizletManager
と呼ばれ、実際に情報を取得するためにサブクラスを使用します。
解決策3: 拡張機能は、基本的にSets
を取得する機能と関連情報を追加する機能が含まれているだろうなど、QuizletManager
クラスを作成し、Sets
をフェッチする機能を追加し、それより読み使用拡張するために、Classes
。
解決策4: このソリューションでは、クラス内にクラスがあります。
あなたの前の例のそれぞれにおいてclass QuizletManager {
var clientID: String
// Other related properties important for sets, classes, etc.
class SetClient: APIClient {
// Fetch related info for sets.
}
}
ああ、私はそのアプローチが好きです。私は他の提案/推奨事項があるかどうかを確認し、あなたの答えを受け入れるでしょう:) – Harish