banquet 47

17
一个艰难的决定 云渺 2010.11.08

Upload: koubei-ued

Post on 31-May-2015

503 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Banquet 47

一个艰难的决定云渺

2010.11.08

Page 3: Banquet 47

9月27日360推出个人隐私保护器,专门曝光“窥私”软件, 直指QQ。

9月28日腾讯称360浏览器涉嫌借色情网站推广

10月14日腾讯正式起诉360不正当竞争

10月28日360弹窗指责马化腾享受经适房补贴

10月29日360推扣扣保镖 称让QQ安全快速更好用

11月3日腾讯决定在装有360软件的电脑上将不能使用QQ。对此360推出360 Web QQ

客户端,但旋即被腾讯以关闭Web QQ服务的方式回击。11月4日

360要求腾讯向6亿QQ注册用户道歉11月5日

金山、傲游、可牛、百度、搜狗五厂商今日在北京召开联合发布会,宣布将不兼容360系列软件。

Page 4: Banquet 47

Page 5: Banquet 47

世界 浏览器 使用统计

Page 6: Banquet 47

中国 浏览器 使用统计

Page 7: Banquet 47

中国 手机浏览器 使用统计

Page 8: Banquet 47

世界 搜索引擎 使用统计

Page 9: Banquet 47

http://gs.statcounter.com/

Page 10: Banquet 47

?单例是一个只能被实例化一次并且可以通过一个众所周知的访问点访问的类。

public class Singleton {private static Singleton uniqueInstance = null; //标识private Singleton(){ } //构造函数public static Singleton getInstance() {

if (uniqueInstance == null){uniqueInstance = new Singleton ();

}return uniqueInstance;

}}

Singleton. getInstance(); //获取单例

Page 11: Banquet 47

?JavaScript单例是一个用来划分命名空间并将一批相关方法和属性组织在一起的对象

// 最简单的单例var Singleton = {

attribute1: true,attribute2: 12,method1: function(){

…},method1: function(){

…}

}

Page 12: Banquet 47

?划分命名空间:

Ext = { }; //全局

//防止全局变量污染、使代码组织有序合理Ext.util = { }; Ext.lib = { };

Ext.util.JSON = { };Ext.util.Observable = { };Ext.util.TaskRunner = { };

Page 13: Banquet 47

?网页专用代码的包装器

Namespace.pageName = {// page contants.CONSTANT_1: true,CONSTANT_2: true,

// page methods.method1: function(){ … },method2: function(){ … },

// Initializtion method.init: function(){ … }

}

addLoadEvent(Namespace.pageName.init);

Page 14: Banquet 47

?拥有私有成员的单例(下划线表示法)

GiantCorp.DataParser = {

// Private methods._stripWhitespace: function (str){

return str.replace(/\s+/, ‘’);},_stringSplit: function (str, delimiter){

return str.split(delimiter);}

// Public method.stringToArray: function(str, delimiter, stripWS){

…}

}

Page 15: Banquet 47

?拥有私有成员的单例(使用闭包)

MyNameSpace.Singleton = (function(){// Private members.var privateAttribute1 = false;function privateMethod1(){

…}return {

// Public members.publicAttribute1: 10,publicMethod1: function(){

…}

}})();

Page 16: Banquet 47

惰性实例化

MyNameSpace.Singleton = (function(){

var uniqueInstance;

function constructor(){// Private members.var privateAttribute1 = false;function privateMethod1(){

…}return {

// Public members.atttibute1: 10,method1: function(){

…}

}}

return {getInstance: function(){

if(!uniqueInstance){uniqueInstance = constructor();

}return uniqueInstance;

}}

})();

MyNameSpace.Singleton.getInstance().method1();

Page 17: Banquet 47

Thanks!