当前位置: 编程技术>移动开发
本页文章导读:
▪大屏台历异步加载每天比赛数目并显示在日历里 大屏日历异步加载每天比赛数目并显示在日历里
#import <QuartzCore/QuartzCore.h>
#import "CalendarController.h"
#import "TdCalendarView.h"
#import "WaitDialog.h"
#import "JSONParser.h"
#import "FunUtil.h"
@implementation Calen.........
▪ Facade(门脸)模式 Facade(门面)模式
Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个.........
▪ java承继复习 java继承复习
package com.edison;
public class ExtendAct {
/** 先给父类成员变量分配内存空间,然后初始化父类构造方法,接着给子类成员变量分配内存空间,最后初始化子类构造方法 */
public static .........
[1]大屏台历异步加载每天比赛数目并显示在日历里
来源: 互联网 发布时间: 2014-02-18
大屏日历异步加载每天比赛数目并显示在日历里
#import <QuartzCore/QuartzCore.h> #import "CalendarController.h" #import "TdCalendarView.h" #import "WaitDialog.h" #import "JSONParser.h" #import "FunUtil.h" @implementation CalendarController @synthesize calendarView; @synthesize currentSelectDate; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { self.title = @"比赛时间"; //self.view.backgroundColor = [UIColor whiteColor]; //self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"back.png"]]; calendarView = [[TdCalendarView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; calendarView.backgroundColor = [UIColor whiteColor]; //calendarView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"back.png"]]; [self.view addSubview:calendarView]; [calendarView setDayFlag:15 flag:-1]; calendarView.calendarViewDelegate = self; } return self; } - (void) selectDateChanged:(CFGregorianDate) selectDate{ currentSelectDate = selectDate; NSLog(@"selectDateChanged catch:%d年%d月%d日",selectDate.year,selectDate.month,selectDate.day); } - (void) monthChanged:(CFGregorianDate) currentMonth viewLeftTop:(CGPoint)viewLeftTop height:(float)height{ NSLog(@"monthChanged catch:%d",currentMonth.month); self.currentSelectDate = currentMonth; [NSThread detachNewThreadSelector:@selector(fetchdata) toTarget:self withObject:nil]; } - (void) beforeMonthChange:(TdCalendarView*) calendarView willto:(CFGregorianDate) currentMonth{ [[self calendarView] clearAllDayFlag]; } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code. } */ - (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; } -(void)fetchdata{ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; int maxDay = [[self calendarView] getDayCountOfaMonth:currentSelectDate]; NSString *dataURL =@""; NSLog(@"dataURL:%@",dataURL); NSArray *data = [JSONParser loadData:dataURL isAllValues:NO valueForKey:@"list"]; [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; [self performSelectorOnMainThread:@selector(showCount:) withObject:data waitUntilDone:NO]; [pool release]; } -(void)showCount:(NSArray *)data{ int count = [data count]; NSLog(@"showChange:%d",count); for(int i = 0;i<count-1;i++){ NSArray *bf = [data objectAtIndex:i]; if([bf valueForKey:@"day"]!=nil){ int day = [[bf valueForKey:@"day"]intValue]; int count = [[bf valueForKey:@"count"]intValue]; [calendarView setDayFlag:day flag:count]; } } [calendarView setNeedsDisplay]; } - (void)dealloc { [calendarView release]; [super dealloc]; } @end
[2] Facade(门脸)模式
来源: 互联网 发布时间: 2014-02-18
Facade(门面)模式
Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面。
应用
老旧的code(尤其是将C的代码转成C++代码)或者即便不是老旧code,但涉及多个子系统时,除了重写全部代码(对于老旧code而言),我们还可能采用这样一种策略: 重新进行类的设计,将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口,供上层应用使用。 这在某种意义上与Adapter及Proxy有类似之处,但是,Proxy(代理)注重在为Client-Subject提供一个访问的中间层,如CORBA可为应用程序提供透明访问支持,使应用程序无需去考虑平台及网络造成的差异及其它诸多技术细节;Adapter(适配器)注重对接口的转换与调整;而Facade所面对的往往是多个类或其它程序单元,通过重新组合各类及程序单元,对外提供统一的接口/界面。
编辑本段操作
1.、
Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作: public class DBCompare { Connection conn = null; PreparedStatement prep = null; ResultSet rset = null; try { Class.forName( "<driver>" ).newInstance(); conn = DriverManager.getConnection( "<database>" ); String sql = "SELECT * FROM <table> WHERE <column name> = ?"; prep = conn.prepareStatement( sql ); prep.setString( 1, "<column value>" ); rset = prep.executeQuery(); if( rset.next() ) { System.out.println( rset.getString( "<column name" ) ); } } catch( SException e ) { e.printStackTrace(); } finally { rset.close(); prep.close(); conn.close(); } } 上例是Jsp中最通常的对数据库操作办法.
2、
在遇到以下情况使用Facade模式: 1、当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。 Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。 2、客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。 3、当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点,如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。
编辑本段优缺点
Facade模式有下面一些优点:
1、
它对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。
2、
它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。 松耦合关系使得子系统的组件变化不会影响到它的客户。Facade模式有助于建立层次结构系统,也有助于对对象之间的依赖关系分层。Facade模式可以消除复杂的循环依赖关系。这一点在客户程序与子系统是分别实现的时候尤为重要。 在大型软件系统中降低编译依赖性至关重要。在子系统类改变时,希望尽量减少重编译工作以节省时间。用Facade可以降低编译依赖性,限制重要系统中较小的变化所需的重编译工作。Facade模式同样也有利于简化系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。
3、
如果应用需要,它并不限制它们使用子系统类。因此你可以在系统易用性和通用性之间加以选择。
Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面。
应用
老旧的code(尤其是将C的代码转成C++代码)或者即便不是老旧code,但涉及多个子系统时,除了重写全部代码(对于老旧code而言),我们还可能采用这样一种策略: 重新进行类的设计,将原来分散在源码中的类/结构及方法重新组合,形成新的、统一的接口,供上层应用使用。 这在某种意义上与Adapter及Proxy有类似之处,但是,Proxy(代理)注重在为Client-Subject提供一个访问的中间层,如CORBA可为应用程序提供透明访问支持,使应用程序无需去考虑平台及网络造成的差异及其它诸多技术细节;Adapter(适配器)注重对接口的转换与调整;而Facade所面对的往往是多个类或其它程序单元,通过重新组合各类及程序单元,对外提供统一的接口/界面。
编辑本段操作
1.、
Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作: public class DBCompare { Connection conn = null; PreparedStatement prep = null; ResultSet rset = null; try { Class.forName( "<driver>" ).newInstance(); conn = DriverManager.getConnection( "<database>" ); String sql = "SELECT * FROM <table> WHERE <column name> = ?"; prep = conn.prepareStatement( sql ); prep.setString( 1, "<column value>" ); rset = prep.executeQuery(); if( rset.next() ) { System.out.println( rset.getString( "<column name" ) ); } } catch( SException e ) { e.printStackTrace(); } finally { rset.close(); prep.close(); conn.close(); } } 上例是Jsp中最通常的对数据库操作办法.
2、
在遇到以下情况使用Facade模式: 1、当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。 Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。 2、客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。 3、当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点,如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。
编辑本段优缺点
Facade模式有下面一些优点:
1、
它对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。
2、
它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。 松耦合关系使得子系统的组件变化不会影响到它的客户。Facade模式有助于建立层次结构系统,也有助于对对象之间的依赖关系分层。Facade模式可以消除复杂的循环依赖关系。这一点在客户程序与子系统是分别实现的时候尤为重要。 在大型软件系统中降低编译依赖性至关重要。在子系统类改变时,希望尽量减少重编译工作以节省时间。用Facade可以降低编译依赖性,限制重要系统中较小的变化所需的重编译工作。Facade模式同样也有利于简化系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。
3、
如果应用需要,它并不限制它们使用子系统类。因此你可以在系统易用性和通用性之间加以选择。
[3] java承继复习
来源: 互联网 发布时间: 2014-02-18
java继承复习
package com.edison; public class ExtendAct { /** 先给父类成员变量分配内存空间,然后初始化父类构造方法,接着给子类成员变量分配内存空间,最后初始化子类构造方法 */ public static void main(String[] args) { A b = new B(); /** 2.父类的引用不能调用子类的属性或方法 */ System.out.println("姓名" + b.name); System.out.println("b.setName()=" + b.setName()); // System.out.println // ("年龄"+b.age);/*这里得不到b的age属性,因为父类引用指向子类对象时,父类的引用不能调用子类的属性或方法*/ } } class A { /** 3.初始化类之前要先给成员变量分配内存空间 */ String name = setName(); String setName() { System.out.println("给父类name属性赋值"); return "Parent"; } /** 1.父类的引用不能调用子类的属性或方法 */ public A() { System.out.println("父类构造方法"); } } class B extends A { int age = setAge(); public B() { System.out.println("子类构造方法"); } int setAge() { System.out.println("给age属性赋值"); return 15; } String setName() { System.out.println("给子类name属性赋值"); return "aaa"; } }
最新技术文章: