- 浏览: 49515 次
- 性别:
- 来自: 杭州
最新评论
文章列表
java代理模式
目录
简介
应用场景
代码示例
展开
简介
即Proxy Pattern,23种java常用设计模式之一。代理模式的定义:对其他对象提供一种代理以控制对这个对象的访问。
代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。
应用场景
例如:假设有一组对象都实现同一个接口,实现同样的方 ...
1.慎用异常。
异常对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为fillInStackTrace()的本地
(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用堆栈,因为在处理过
程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。
2.不要重复初始化变量。
默认情况下,调用类的构造函数时,
Java会把变量初始化成确定的值:所有的对象被设置成null,整数变量(byte、short、int、long)设置成 ...
dom中描述xml结构的方式最为一种可导航的树,使用的所以术语和一个家族树(parent,chlid,sibling)近似。
!=和 ==和 !==和===的区别
在js里面null,0,"",false,undefined全部彼此相等(==),因为他们的计算值都为false,这意味test==false,当test为undefined的时候是true的,这正是!==和===的 有用地方,这两个操作符将检查变量的精确值(比如null) 而不是单纯的计算值(false)
null==false
0==defined
null!==false
false===false
<html>
<head>
<body>
<div id ="main">
</body>
</head>
</html>
<script type="text/javascript">
function User(name){
this.name=name;
}
var me = new User("test");
alert(me.name=="test");
alert(me.constr ...
js上下文
在JavaScript中,你的代码将总是有着某种形式的上下文(代码在其内部工作的
对象)。这也是其它面向对象语言所共有的功能,但它们都不如JavaScript处理得这样极端。上下文是通过变量this工作。变量this总是引用代
码当前所在的那个对象。记住全局对象实际上是window对象的属性。这意味着即使是在全局上下文里,this
变量仍然引用一个对象。上下文可以成为一个强大的工具,是面向对象代码不可或缺的一环。程序1展示了一些关于上下文的简单例子。
程序1. 在上下文中使用函数然后将其上下文切换到另一个变量的例子
代码
1
...
<html>
<head>
<body>
<div id ="main">
</body>
</head>
</html>
<script type="text/javascript">
var obj = document.getElementById("main");
debugger;
obj.style.border="1px solid red";
setTimeout(functi ...
<html>
<head>
<script type="text/javascript">
//全局变量foo
var foo = "test";
if(true){
foo="new test";
}
alert(foo=="new test");
function test(){
var foo="old test"
}
//调用时,foo 驻留在函数的作用域里
test();
alert(foo=="n ...
js 重载和类型检查
- 博客分类:
- js学习笔记
<html>
<head>
<script type="text/javascript">
function sendMessage(msg,obj){
//js 的每一个函数存在一个上下文相关的arguments的变量
//类似以一个伪数组 包含了传给函数的所有参数,不能对其进行修改
if(arguments.length==2)
obj.handleMsg(msg);
else
alert(msg);
if(typeof msg == "string")
alert(& ...
<html>
<head>
<script type="text/javascript">
// js 引用
var item = new Array("one","two");
var itemRef = item;
//item和itemRef指向同一个对象(Array)的指针
item.push("three");
alert(item.length==itemRef.length);
itemRef.push("three");
al ...
function User(name){
this.name=name;
}
User.prototype.display = function(){
alert("User's name is:"+this.name);
}
var me = new User("test");
me.display();
JavaScript能够实现的面向对象的特征有:
·公有属性(public field)
·公有方法(public Method)
·私有属性(private field)
·私有方法(private field ...
Java栈与堆
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
3. Java中的数据类型有两种。
一种是基本类型(primitive types), 共有8 ...