有哪些在游戏开发中常用的敏捷开发模式到的设计模式

Java开发中的23种设计模式 ---任务易48693人阅读
objective-c(4)
ios开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~
(一)代理模式
应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。
优势:解耦合
敏捷原则:开放-封闭原则
实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求。
列表row个数delegate
自定义的delegate
(二)观察者模式
应用场景:一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息。
优势:解耦合
敏捷原则:接口隔离原则,开放-封闭原则
实例:Notification通知中心,注册通知中心,任何位置可以发送消息,注册观察者的对象可以接收。
kvo,键值对改变通知的观察者,平时基本没用过。
(三)MVC模式
应用场景:是一中非常古老的设计模式,通过数据模型,控制器逻辑,视图展示将应用程序进行逻辑划分。
优势:使系统,层次清晰,职责分明,易于维护
敏捷原则:对扩展开放-对修改封闭
实例:model-即数据模型,view-视图展示,controller进行UI展现和数据交互的逻辑控制。
(四)单例模式
应用场景:确保程序运行期某个类,只有一份实例,用于进行资源共享控制。
优势:使用简单,延时求值,易于跨模块
敏捷原则:单一职责原则
实例:[UIApplication sharedApplication]。
注意事项:确保使用者只能通过 getInstance方法才能获得,单例类的唯一实例。
java,C++中使其没有公有构造函数,私有化并覆盖其构造函数。
object c中,重写allocWithZone方法,保证即使用户用 alloc方法直接创建单例类的实例,
返回的也只是此单例类的唯一静态变量。
(五)策略模式
应用场景:定义算法族,封装起来,使他们之间可以相互替换。
优势:使算法的变化独立于使用算法的用户
敏捷原则:接口隔离原则;多用组合,少用继承;针对接口编程,而非实现。
实例:排序算法,NSArray的sortedArrayUsingSelector;经典的鸭子会叫,会飞案例。
注意事项:1,剥离类中易于变化的行为,通过组合的方式嵌入抽象基类
2,变化的行为抽象基类为,所有可变变化的父类
3,用户类的最终实例,通过注入行为实例的方式,设定易变行为
防止了继承行为方式,导致无关行为污染子类。完成了策略封装和可替换性。
(六)工厂模式
应用场景:工厂方式创建类的实例,多与proxy模式配合,创建可替换代理类。
优势:易于替换,面向抽象编程,application只与抽象工厂和易变类的共性抽象类发生调用关系。
敏捷原则:DIP依赖倒置原则
实例:项目部署环境中依赖多个不同类型的数据库时,需要使用工厂配合proxy完成易用性替换
注意事项:项目初期,软件结构和需求都没有稳定下来时,不建议使用此模式,因为其劣势也很明显,
增 加了代码的复杂度,增加了调用层次,增加了内存负担。所以要注意防止模式的滥用。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:449263次
积分:5155
积分:5155
排名:第3699名
原创:109篇
转载:59篇
评论:323条
(1)(2)(5)(5)(12)(1)(1)(1)(6)(3)(1)(4)(1)(9)(9)(20)(17)(1)(1)(6)(8)(2)(1)(2)(6)(11)(13)(4)(15)有哪些在游戏开发中常用到的设计模式_百度知道比特客户端
您的位置:
详解大数据
详解大数据
详解大数据
详解大数据
常见的Java的10种设计模式介绍
关键字:Java
  正常情况下一个设计模式描述了一个被证实可行的。这些方案非常普遍,是具有完整定义的最常用的模式。一般模式有4个基本要素:模式名称(pattern name)、问题(problem)、解决方案(solution)、效果(consequences)。常见的Java设计模式有以下10种:
  1、桥梁模式(Bridge):将抽象部分与它的实现部分分离,使它们独立地变化。
  2、合成模式(Composite):将对象组合成树形结构以表示"部分-整体"的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。
  3、抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
  4、装饰模式(Decorator):动态地给一个对象添加一些额外的职责。就扩展功能而言,它能生成子类的方式更为灵活。
  5、适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口或类不兼容而不能一起工作的类可以一起工作。
  6、责任链模式(Chain of Responsibility):为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成链,并沿着这条链传递该请求,直到有一个对象处理它。
  7、工厂方法(Factory Method):定义一个用于创建对象的接口,让子类决定将哪一个类。Factory Method 使一个类的实例化延迟到其子类。
  8、建造模式(Builder):将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。
  9、门面模式(Facade):为子系统中的一组接口提供一个一致的界面,门面模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
  10、命令模式(Command):将一个请求为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
[ 责任编辑:之极 ]
HPE Octane为开发者和…
甲骨文的云战略已经完成第一阶段…
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注ChinabyteiOS开发:设计模式那点事
招聘信息:
说起设计模式,感觉自己把握不了笔头,所以单拿出iOS开发中的几种常用设计模式谈一下。单例模式(Singleton)概念:整个应用或系统只能有该类的一个实例在iOS开发我们经常碰到只需要某类一个实例的情况,最常见的莫过于对硬件参数的访问类,比如UIAccelerometer.这个类可以帮助我们获得硬件在各个方向轴上的加速度,但是我们仅仅需要它的一个实例就够了,再多,只会浪费内存。所以苹果提供了一个UIAccelerometer的实例化方法+sharedAccelerometer,从名字上我们也能看出此方法让整个应用共享一个UIAccelerometer实例(PS:iOS 的开放中,我们往往能从方法名中就了解这个方法的作用),它内部的如何实现我们暂且不谈,先来看看还有哪些类同样使用了单例模式。●&UIApplication类提供了 +sharedAPplication方法创建和获取UIApplication单例●&NSBundle类提供了 +mainBunle方法获取NSBundle单例●&NSFileManager类提供了 +defaultManager方法创建和获得NSFileManager单例。(PS:有些时候我们得放弃使用单例模式,使用-init方法去实现一个新的实例,比如使用委托时)●&NSNotificationCenter提供了 +defaultCenter方法创建和获取NSNotificationCenter单例(PS:该类还遵循了另一个重要的设计模式:观察者模式)●&NSUserDefaults类提供了 +defaultUserDefaults方法去创建和获取NSUserDefaults单例等等,苹果的SDK中大量的遵循此设计模式,那么它的内部是如何实现的呢?首先给大家介绍一下GCD技术,是苹果针对于多核CPU的多任务解决方案。你不需要了解更多,只需要知道是一组基于C语言开发的API(详细内容可以看一下唐巧前辈的这篇博文:&)。GCD提供了一个dispatch_once函数,这个函数的作用就是保证block(代码块:暂时理解为一个跟函数相近的东西,具体可以参照这篇文章:&)里的语句在整个应用的生命周期里只执行一次。OK,接下来就给出一个使用了单例模式新建和获取实例的类模版,代码如下://Singleton.h
@interface&Singleton&:&NSObject
+&(Singleton&*)sharedS&&1&
/***************************************************************/
//Singleton.m
#import&&Singleton.h&
@implementation&Singleton&&&
static&Singleton&*sharedSingleton&=&&2&
+&(Singleton&*)sharedSingleton{
&&&&static&dispatch_once_t&&3&
&&&&dispatch_once(&once,^{
&&&&&&&&sharedSingleton&=&[[self&alloc]&init];&4&
&&&&&&&&//dosometing
&&&&return&sharedS&5&
}上述代码中有5小步,解释如下:1. 声明一个可以新建和获取单个实例对象的方法2. 声明一个static类型的类变量3. 声明一个只执行一次的任务4. 调用dispatch_once执行该任务指定的代码块,在该代码块中实例化上文声明的类变量5. 返回在整个应用的生命周期中只会被实例化一次的变量OK,这就是iOS开发中单例模式的机制,下面我们就看看如何在实际开发中使用此模式?(PS:为了尽可能的突出核心内容,我们会对设计中的其他模式或内容一笔带过)假如我们需要在iOS应用中实现分层的架构设计,即我们需要把数据的持久层,展示层,和逻辑层分开。为了突出重点,我们直接把目光转到持久层,而根据MVC的设计模式,我们又可以把持久层细分为DAO层(放置访问数据对象的四类方法)和Domain层(各种实体类,比如学生),这样就可以使用DAO层中的方法,配合实体类Domain层对数据进行清晰的增删改查。那么我们如何设计呢?从使用者的角度看,我们期望获得DAO层的类实例,然后调用它的增删改查四大方法。可是这个类实例,我们似乎只需要一个就足够了,再多的话不利于管理且浪费内存。OK,我们可以使用单例模式了,代码如下:.h文件://StudentDAO.h
@interface&StudentDAO:NSObject
@property&(nonatomic,strong)&NSMutaleArray&*StudentsI
+&(StudentDAO&*)sharedStudentDAO;
-(int)&create:(Student*)
-(int)&remove:(Student*)
-(int)&modify:(Student*)
-(NSMutaleArray)&findA
@end.m文件://StudentDAO.m
#import&&StudentDAO.h&
#import&&Student.h&
@implementation&StudentDAO
static&StudentDAO&*studentDao&=&
+&(StudentDAO)sharedStudentDAO{
&&&&static&dispatch_once_t&
&&&&dispatch_once(&once,^{
&&&&&&&&Student&&*student1&=&[[Student&alloc]init];
&&&&&&&&student1.name&=&&MexiQQ&;
&&&&&&&&student1.studentNum&=&&&;
&&&&&&&&Student&&*student2&=&[[Student&alloc]init];
&&&&&&&&student2.name&=&&Ricardo_LI&;
&&&&&&&&student2.studentNum&=&&&;
&&&&&&&&studentDao&=&[[self&alloc]&init];
&&&&&&&&studentDao._StudentsInfo&=&[[NSMutaleArray&alloc]init];
&&&&&&&&[studentDao._StudentsInfo&addObject:student1];
&&&&&&&&[studentDao._StudentsInfo&addObject:student2];
&&&&return&studentD
//插入的方法
-(int)create:(Student*)stu{
&&&&[self._StudentsInfo&addObject:stu];
&&&&return&0;
//删除的方法
-(int)remove:(Student*)stu{
&&&&for(Student*&s&in&self._StudentsInfo){
&&&&&&&&if([stu.studentNum&isEqual:s.studentNum]){
&&&&&&&&&&&&[self._StudentsInfo&removeObject:s]
&&&&&&&&&&&&
-(int)modify......&//省略不写
-(NSMutaleArray)findAll......&//省略不写上述例子不难理解,其中用到的Student类我这里就不给出了,只是一个含有姓名和学号属性的实体类。观察者模式概念:一个对象状态改变,通知正在对他进行观察的对象,这些对象根据各自要求做出相应的改变图例:如图所示:操作对象向被观察者对象投送消息,使得被观察者的状态得以改变,在此之前已经有观察者向被观察对象注册,订阅它的广播,现在被观察对象将自己状态发生改变的消息广播出来,观察者接收到消息各自做出应变。OK,我们先来看看在苹果的Cocoa Touch框架中有谁使用了观察者模式:通知(notification)机制原理图如下:如图所示,在通知机制中对某个通知感兴趣的所有对象都可以成为接受者。首先,这些对象需要向通知中心(NSNotificationCenter)发出addObserver:selector:name:object:消息进行注册,在投送对象投送通知送给通知中心时,通知中心就会把通知广播给注册过的接受者。所有的接受者不知道通知是谁投送的,不去关心它的细节。投送对象和接受者是一对多的关系。接受者如果对通知不再关注,会给通知中心发送removeObserver:name:Object:消息解除注册,以后不再接受通知。(ps:这段话内容摘抄自关东升先生的文章)OK,我们试着去使用一下通知机制:新建一个Single view Project,对项目中的文件做以下修改:AppDelegate.m-&(void)applicationDidEnterBackground:(UIApplication&*)application&{
&&&&[[NSNotificationCenter&defaultCenter]postNotificationName:@&APPTerminate&&object:self];
}ViewController.m//
//&&ViewController.m
//&&TestNotification
//&&Created&by&liwenqian&on&14-10-18.
//&&Copyright&(c)&2014年&liwenqian.&All&rights&reserved.
#import&&ViewController.h&
@interface&ViewController&()
@implementation&ViewController
-&(void)viewDidLoad&{
&&&&[super&viewDidLoad];
&&&&//注意此处的selector有参数,要加冒号
&&&&[[NSNotificationCenter&defaultCenter]addObserver:self&selector:@selector(doSomething:)&name:@&APPTerminate&&object:nil];
&&&&//&Do&any&additional&setup&after&loading&the&view,&typically&from&a&nib.
-&(void)didReceiveMemoryWarning&{
&&&&[super&didReceiveMemoryWarning];
&&&&[[NSNotificationCenter&defaultCenter]removeObserver:self];
&&&&//&Dispose&of&any&resources&that&can&be&recreated.
#pragma&mark&-处理通知
-(void)doSomething:(NSNotification*)notification{
&&&&NSLog(@&收到通知&);
@end如上所示,对模版项目的两个文件的方法或整个文件做出修改,Command+R运行你的APP,再按下Home键(Command+H),会发现打印出一行收到通知的文字,如下:在APP退到后台时,发出广播,而viewController因为时观察者,收到广播,执行doSomething方法,打印出收到广播的文字。KVO(Key-Value-Observing)机制原理图如下:如图所示:该机制下观察者的注册是在被观察者的内部进行的,不同于通知机制(由观察者自己注册),需要被观察者和观察者同时实现一个协议:NSKeyValueObserving,被观察者通过addObserver:forKeypath:options:context方法注册观察者,以及要被观察的属性。新建一个single view project,同时新建一个继承自NSObject的TestWatche类:文件结构如下图:对文件进行如下修改:AppDelegate.h//
//&&AppDelegate.h
//&&TestNotification
//&&Created&by&liwenqian&on&14-10-18.
//&&Copyright&(c)&2014年&liwenqian.&All&rights&reserved.
#import&&UIKit/UIKit.h&
#import&&CoreData/CoreData.h&
#import&&TestWatche.h&
@interface&AppDelegate&:&UIResponder&&UIApplicationDelegate&
@property&(strong,&nonatomic)&UIWindow&*
@property&(readonly,&strong,&nonatomic)&NSManagedObjectContext&*managedObjectC
@property&(readonly,&strong,&nonatomic)&NSManagedObjectModel&*managedObjectM
@property&(readonly,&strong,&nonatomic)&NSPersistentStoreCoordinator&*persistentStoreC
@property&(strong,nonatomic)&NSString&*
@property&(strong,nonatomic)&TestWatche&*
-&(void)saveC
-&(NSURL&*)applicationDocumentsD
@endAppDelegate.m 对如下方法做出修改-&(BOOL)application:(UIApplication&*)application&didFinishLaunchingWithOptions:(NSDictionary&*)launchOptions&{&&&&//&Override&point&for&customization&after&application&launch.
&&&&self.watcher&=&[TestWatche&alloc];
&&&&[self&addObserver:self.watcher&forKeyPath:@&state&&options:NSKeyValueObservingOptionOld&|&NSKeyValueObservingOptionNew&context:@&pass&content&];&&&&self.state&=&@&launch&;&&&&return&YES;
-&(void)applicationDidEnterBackground:(UIApplication&*)application&{&&&&self.state&=&@&backgroud&;
}TestWatche.m(由于继承自NSObject,而NSObject已实现了NSKeyValueObserving协议,所以不需要做声明)//
//&&TestWatche.m
//&&TestNotification
//&&Created&by&liwenqian&on&14-10-18.
//&&Copyright&(c)&2014年&liwenqian.&All&rights&reserved.
#import&&TestWatche.h&
@implementation&TestWatche
-(void)observeValueForKeyPath:(NSString&*)keyPath&ofObject:(id)object&change:(NSDictionary&*)change&context:(void&*)context{
&&&&NSLog(@&state&change:%@&,change);
@endOK,Command+B Command+R Command+H看看你的应用输出了什么,如果你的操作无误的话,会显示如下内容:委托模式个人认为委托模式大多数人解释的复杂了,其实就像是java中的接口,类可以实现或不实现协议(接口)中的方法。通过此种方式,达到最大的解耦目的,方便项目的扩展。不过你需要设置应用的委托对象,以确定协议中的方法为谁服务。拿最常用的UITableViewDelegate UITableViewDataSource来举例:实现一个页面有一个UItableView,UItableView的每一栏(cell)的数据由我们指定,那么我们该如何做呢?苹果也自然想到了这一点,于是定义了一个接口,这个接口有许多的方法,只需要我们把要服务的对象传进去,就可以使用这些方法了,这个接口就是委托和协议。而UITableViewDelegate 和 UITableViewDataSource 就是专为UITableView而写的委托和协议。用法如下:ViewController.h//
//&&ViewController.h
//&&RecipeBookMe
//&&Created&by&liwenqian&on&14-9-10.
//&&Copyright&(c)&2014年&liwenqian.&All&rights&reserved.
#import&&UIKit/UIKit.h&
@interface&ViewController&:&UIViewController&&UITableViewDelegate,&UITableViewDataSource&
@property&(nonatomic,&strong)&IBOutlet&UITableView&*mytableV
@endViewController.m//
//&&ViewController.m
//&&RecipeBookMe
//&&Created&by&liwenqian&on&14-9-10.
//&&Copyright&(c)&2014年&liwenqian.&All&rights&reserved.
#import&&ViewController.h&
#import&&DetailViewController.h&
#import&&Recipe.h&
#import&&RecipeTableCellTableViewCell.h&
@interface&ViewController&()
@implementation&ViewController{
&&&&&NSArray&*&&&&&&
@synthesize&mytableV
-&(void)viewDidLoad&{
&&&&[super&viewDidLoad];
&&&&//&Initialize&the&recipes&array
&&&&Recipe&*recipe1&=&[Recipe&new];
&&&&recipe1.name&=&@&Egg&Benedict&;
&&&&recipe1.prepTime&=&@&30&min&;
&&&&recipe1.image&=&@&egg_benedict.jpg&;
&&&&recipe1.ingredients&=&[NSArray&arrayWithObjects:@&2&fresh&English&muffins&,&@&4&eggs&,&@&4&rashers&of&back&bacon&,&@&2&egg&yolks&,&@&1&tbsp&of&lemon&juice&,&@&125&g&of&butter&,&@&salt&and&pepper&,&nil];
&&&&Recipe&*recipe2&=&[Recipe&new];
&&&&recipe2.name&=&@&Mushroom&Risotto&;
&&&&recipe2.prepTime&=&@&30&min&;
&&&&recipe2.image&=&@&mushroom_risotto.jpg&;
&&&&recipe2.ingredients&=&[NSArray&arrayWithObjects:@&1&tbsp&dried&porcini&mushrooms&,&@&2&tbsp&olive&oil&,&@&1&onion,&chopped&,&@&2&garlic&cloves&,&@&350g/12oz&arborio&rice&,&@&1.2&litres/2&pints&hot&vegetable&stock&,&@&salt&and&pepper&,&@&25g/1oz&butter&,&nil];&
&&&&recipes&=&[NSArray&arrayWithObjects:recipe1,&recipe2,&nil];
-&(void)didReceiveMemoryWarning&{
&&&&[super&didReceiveMemoryWarning];
/*--------------------------------------------------------------------*/
//定义UITableview的栏目数量
-&(NSInteger)tableView:(UITableView&*)tableView&numberOfRowsInSection:(NSInteger)section
&&&&&return&[recipes&count];
//定义UITableviewCell的显示内容
-&(UITableViewCell&*)tableView:(UITableView&*)tableView&cellForRowAtIndexPath:(NSIndexPath&*)indexPath
&&&&static&NSString&*CoustomerTableIdentifier&=&@&RecipeTableCellTableViewCell&;
&&&&RecipeTableCellTableViewCell&*cell&=(RecipeTableCellTableViewCell&*)&[tableView&dequeueReusableCellWithIdentifier:CoustomerTableIdentifier];
&&&&if&(cell&==&nil)&{
&&&&&&&cell&=&[[RecipeTableCellTableViewCell&alloc]&initWithStyle:UITableViewCellStyleDefault&reuseIdentifier:CoustomerTableIdentifier];
&&&&recipe&=&[recipes&objectAtIndex:indexPath.row];
&&&&cell.nameLabel.text&=&&recipe.
&&&&cell.prepTimeLabel.text=&recipe.prepT
&&&&cell.thumbnailImageView.image&=&[UIImage&imageNamed:recipe.image];
&&&&return&
//点击每一栏执行跳转时的处理
-&(void)prepareForSegue:(UIStoryboardSegue&*)segue&sender:(id)sender&{
&&&&if&([segue.identifier&isEqualToString:@&showRecipeDetail&])&{
&&&&&&&&NSIndexPath&*indexPath&=&
&&&&&&&&Recipe&*recipe&=&
&&&&&&&&indexPath&=&[self.mytableView&indexPathForSelectedRow];
&&&&&&&&recipe&=&[recipes&objectAtIndex:indexPath.row];
&&&&&&&&DetailViewController&*destViewController&=&segue.destinationViewC
&&&&&&&&destViewController.recipe&=&[recipes&objectAtIndex:indexPath.row];
//定义cell的高度
-&(CGFloat)tableView:(UITableView&*)tableView&heightForRowAtIndexPath:(NSIndexPath&*)indexPath
&&&&return&71;
/*--------------------------------------------------------------------*/
@end如上所示,两条/------/注释间的方法全部来自于委托和协议。利用委托和协议,你可以把主要精力放到逻辑业务上,将数据绑定和事件处理交给委托和协议去完成。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量16272点击量10875点击量8664点击量8017点击量7488点击量7063点击量6588点击量6497点击量5716
&2016 Chukong Technologies,Inc.
京公网安备89

我要回帖

更多关于 java常用开发模式 的文章

 

随机推荐