Категория, протокол, один большой класс? Что мне здесь следует использовать

Я пытаюсь реализовать общий числовой класс. В основном мое приложение должно получить строку от пользователя и проанализировать ее, чтобы определить, является ли ее британская (футы в долях или любая их комбинация) или ее метрика (м см мм или любая комбинация). Моя идея заключалась в том, чтобы сделать классы Metric и Imperial, оба из которых имеют более общий тип Number. Затем пользовательский интерфейс создает объект Number, передающий строку для синтаксического анализа, и число определяет, является ли оно метрическим или британским. Я вижу, как легко было бы создать 1 класс с большим числом, который делает это, но мне кажется, что я должен отделить метрические и имперские классы от стандартного интерфейса (Number), поскольку они будут делать гораздо больше, чем просто анализировать строку.

Итак, если я сделаю Number * num = [[Number alloc] initWithString: someString]; , я получу подкласс Number, специфичный для британских или метрических единиц. Именно здесь я понимаю, что что-то не имеет смысла, но не знаю, как это сделать.

Как лучше с этим справиться?

5
задан jamone 26 April 2011 в 13:05
поделиться