Теперь я знаю, что этот вопрос очень ориентирован на мнение, потому что люди обычно проектируют свои приложения по-разному ... Однако, я хочу знать, делаю ли я что-то неправильно, или вообще не одобряю это в сообществе программистов на c, или если у вас есть какие-либо предложения относительно того, как опытный разработчик obj c может по-другому это оформить ...
LOCATION - это структура, а BULLET - это перечисление, определенное в заголовочном файле Constants.h, BulletV - это подкласс UIView, а Bullet - это подкласс NSObject
У меня есть следующий код:
#import "Bullet.h"
@implementation Bullet
@synthesize Type;
@synthesize Location;
@synthesize Strength;
- (id)initWithLocation:(LOCATION)location Type:(BULLET)type Strength:(int)strength
{
self = [super init];
if (self)
{
self.Location = location;
self.Type = type;
self.Strength = strength;
}
return self;
}
@end
@implementation BulletV
@synthesize Type;
- (id)initWithLocation:(LOCATION)location Type:(BULLET)type
{
self = [super initWithFrame:CGRectMake(location.x - 10.0, location.y - 2.0, 20.0, 40.0)];
if (self)
{
self.center = CGPointMake(location.x, location.y);
self.Type = type;
}
return self;
}
- (void)drawRect:(CGRect)rect
{
switch (self.Type)
{
case Normal:
self.backgroundColor = [UIColor redColor];
break;
default:
break;
}
}
@end
Теперь я относительно новичок в MVC ... но похоже, что разделение модели и представления создает много дубликатов, которые я ненавижу в своем коде ..
Например, тот факт, что у нас есть 2 с одинаковыми именами Свойства (Расположение и Тип), используемые в этих блоках реализации, меня беспокоит, но я не знаю, как бы я сделал это любым другим способом, сохраняя при этом разделение между моделью и видом.
Кроме того, оба метода init для вида и модели очень похожи, за исключением того, что модель также включает параметр прочности.
У меня очень Java-ориентированное мышление при программировании, мне нравится иметь отдельные файлы для каждого объекта и для каждого объекта иметь состояние и определенные действия. Теперь этот новый дизайн запрещает любые действия, которые будут использоваться в эти заголовки, потому что они должны быть размещены в контроллере.
Любые комментарии приветствуются, если именно так вы бы сделали «объект маркера» (больше похожий на прямоугольник) в своем приложении, тогда не стесняйтесь комментировать, но мне это не кажется правильным. Не стесняйтесь высказать свое мнение.