1
2
3
4
5
6
7
|
public static class Utils
{
public static void PrintToConsole( this string strSrc)
{
Console.WriteLine(strSrc);
}
}
|
1
2
3
4
5
6
7
|
class MainClass
{
public static void Main ( string [] args)
{
"Hello World!" .PrintToConsole();
}
}
|
#import <Foundation/Foundation.h>
@interface NSString(ExtNSString)
-(void) PrintToConSole;
@end
#import "StringUtils.h"
@implementation NSString(ExtNSString)
-(void) PrintToConSole
{
NSLog(@"%@",self);
}
@end
#import <Foundation/Foundation.h>
#import "StringUtils.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString* str = @"Hello World!";
[str PrintToConSole];
[pool drain];
return 0;
}
#import <Foundation/Foundation.h>
@interface BLL : NSObject {
NSString* connStr;
}
-(void) setConnString:(NSString*) connString;
-(NSString*) connString;
@end
#import "BLL.h"
@implementation BLL
-(void) setConnString:(NSString *)connString
{
connStr = connString;
}
-(NSString*) connString
{
return connStr;
}
-(void) dealloc
{
[connStr release];
[super dealloc];
}
@end
#import <Foundation/Foundation.h>
#import "BLL.h"
@interface BLL(Product)
-(void) addProduct: (NSString* )productName productNo:(NSString*)proNo;
-(void) deleteProduct:(NSString*) productNo;
@end
#import "Product.h"
#import "BLL.h"
@implementation BLL(Product)
-(void) addProduct: (NSString* )productName productNo:(NSString*)proNo
{
NSLog(@"connString=%@",connStr);//输出Bll.h中定义的成员connStr
NSLog(@"addProduct success! productName:%@,productNo:%@",productName,proNo);
}
-(void) deleteProduct:(NSString*) productNo
{
NSLog(@"connString=%@",[self connString]);//也可以用属性来访问
NSLog(@"deleteProduct success! productNo:%@",productNo);
}
@end
3、定义Order.h继续扩展BLL类
#import <Foundation/Foundation.h>
#import "BLL.h"
@interface BLL(Order)
-(void) createOrder:(NSString*) productNo quantity:(int) amount;
@end
Order.m
#import "Order.h"
@implementation BLL(Order)
-(void) createOrder:(NSString*) productNo quantity:(int) amount
{
NSLog(@"thank you for order our product. productNo:%@,quantity:%d",productNo,amount);
}
@end
由于Product类与Order类都是扩展自BLL类,所以这三个类在逻辑上都是同一个类BLL,最后来看看如何使用:
#import <Foundation/Foundation.h>
#import "BLL.h"
#import "Product.h"
#import "Order.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
BLL *bll = [[BLL alloc] init];
bll.connString = @"I am connection string.";
[bll addProduct:@"iphone4" productNo:@"0001"];//调用Product.h中定义的方法
[bll createOrder:@"0001" quantity:5];
[bll deleteProduct:@"0001"];//调用Order.h中定义的方法
[bll release];
[pool drain];
return 0;
}
运行结果:
2011-02-26 22:29:30.369 Demo[1292:a0f] connString=I am connection string.
2011-02-26 22:29:30.376 Demo[1292:a0f] addProduct success! productName:iphone4,productNo:0001
2011-02-26 22:29:30.378 Demo[1292:a0f] thank you for order our product. productNo:0001,quantity:5
2011-02-26 22:29:30.379 Demo[1292:a0f] connString=I am connection string.
2011-02-26 22:29:30.380 Demo[1292:a0f] deleteProduct success! productNo:0001
皆大欢喜,很多语言和技术真是“一门通,处处通”,也许:c#中的"扩展方法"与"部分类"的设计灵感正是来自objective-C。