我有几个关于代码设计的问题。这可能很长。我会尽可能缩短它。
Q1) 依赖还是独立?
创建一个类并添加所需的功能,以允许对象更改自己的状态与控制器(又名视图控制器)更改的状态
我发现代码示例在尝试交流时是最好的: 注意:我减少了一些代码行。来自http://www.techotopia.com/index.php/An_Overview_of_Objective-C_Object_Oriented_Programming的原始代码。
无论如何,如果我必须为帐户设置帐户余额,建议我这样做:
@interface BankAccount: NSObject
{
double accountBalance;
long accountNumber;
}
-(double) getAccountBalance;
-(void) setAccountBalance: (double) x;
@end
// Implementation Section Starts Here
@implementation BankAccount
-(void) setAccountBalance: (double) x
{
accountBalance = x;
}
-(double) getAccountBalance
{
return accountBalance;
}
@end
//usage
BankAccount *account1 = [BankAccount alloc] init];
[account1 setAccountBalance: 1500.53];
----但是我相信我会在这样的控制器中编写它:-----
@interface BankAccount: NSObject
{
double accountBalance;
long accountNumber;
}
import "BankAccount.h"
@interface MeViewController : UIViewController
-(void)setAccountBalance:(double)x toAccount:(BankAccount *)tempBankAcc;
@end
@implementation myViewController
-(void) setAccountBalance:(double)x toAccount:(BankAccount *)tempBankAcc
{
tempBankAcc.accountBalance = x;
}
//USAGE
BankAccount *account1 = [BankAccount alloc] init];
[self setAccountBalance(Account1,1500.53)]
@end
因为我相信是我(meViewController)设置了AccountBalance,而不是帐户本身作为帐户只是一个帐户。这是一个非常糟糕的主意吗?我可以通过他们的示例看到该对象可以照顾自己(独立),这意味着改变自己的状态,而我的方法说 BankAccount 只能通过/使用控制器(依赖)修改???
Q2) 控制器中应该/不应该有什么?
我还在某处读过控制器内部编写的代码应该仅用于:
响应用户交互和更新视图
这是否意味着我永远不应该在控制器中执行以下操作:
从 NSUserDefaults 读取或写入。由于它是一个单例,我认为无论哪个控制器当前处于活动状态,写入它都会更容易?馊主意?我知道我应该在 applicationDidEnterBackground 和 applicationWillTerminate 中保存数据(包括 NSUserDefaults),因此将数据保存在其他地方(例如,在另一个控制器中)是个坏主意。
Q3) 你最常使用哪些设计模式,你错误地滥用了哪些设计模式?
单例:我的理解是 [UIApplication sharedApplication],[NSNotification defaultCenter] 和其他单例可以通过所有控制器访问,那么 NSObject 子类呢?还是 UIView 子类?
显然,您可以使用 NSNotification 在模型更新时通知其他控制器。有人可以告诉我何时使用以及如何使用它的示例吗?也许当您导入一些具有与最初预期不同的属性的数据时,可能会通知观察者升级的数据模型,这是您何时在数据模型中通知控制器的示例?
现在问题已经够多了。
对不起,但我不得不把它们都从我的脑海中抹去:-)
本