摘要:代理模式的作用: 为其他对象提供一种代理以控制对这个对象的访问。 在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 中介不仅可以帮助客户端完成客户想要完成的事情,还可以完成中介自己想要做的事情。代理模式中涉及到的角色: 六十五-18:00 1、抽象角色:声明真实对象和代理对象的共同接口;(例如:中介和房主两者均可以完成租房子这件事情,因此两者含有共同的接口,接口中含有租房子这个方法) 2、代理角色:代理角色对象内部含有对真是对象的引用,从而可以操作真实对象(聚合包容关系),同时代理对象提供与真是对象相同的接口以便在任何时候...
阅读全文
摘要:六十-20:00要使用静态成员(方法和变量)我们必须给出提供这些个静态成员所在的类。而使用静态导入可以使被导入的类的所有静态变量和静态方法在当前类中可以直接使用,使用这些静态成员无需再给出他们的类名。如下例:不使用静态导入的状况:package cn.edu.bupt;import cn.edu.bupt.common.Common; //需要导入到类的层面即可public class Hello { /** * @param args */ @MyAnno(schoolName="BUPT",studentName="YangM") public st
阅读全文
摘要:一、EnumSet介绍EnumSet的名称说明了其作用,他是在J2SE 5.0后加入的新类别,可以协助建立枚举值的集合,他提供一系列静态方法,可以让您指定不同的集合建立方式。在实际开发中常用的集合类使用较多,枚举类型的Set使用的场合并不是很多。EnumSet是一个泛型,他接受接受枚举类型的对象作为其内部的成员。由枚举类型本身特点决定EnumSet和普通集合类的初始化方式是不一样的,普通集合类的初始化方式如下:List<E> list = new ArrayList<E>;但是EnumSet初始化方式不能按照上述new方式写出来。并且我们不能像这个List一样去随意的想
阅读全文
摘要:JDK 1.5加入了一个全新类型的“类”(与类、接口属于同一个层次)-- 枚举类型。为此JDK1.5引入了一个新关键字:enum一、枚举类型及其原理的介绍1.我们可以这样定义和使用一个枚举类型,枚举名称一般使用大写方式:定义:public enum Color { Red, White, Blue;}注:最后一个枚举类型值可加分号“;”也可不加。使用:Color myColor = Color.Red;2.枚举类型还定义了两个有用的静态方法values() 和valueOf()使用方式: values():package cn.edu.bupt;public class C...
阅读全文
摘要:可变参数使程序员可以声明一个可以接受可变数目参数的方法。注意:可变参数必须是方法声明中的最后一个参数,否则会发生编译错误,因此一个方法的可变参数只可能有一个,而不可能存在两个以上的可变参数。例1:package cn.edu.bupt;public class TestVarArgues { private static int sum(int... nums) { //这里在类型名称后边加入3个点来表示当前参数的类型时int类型,但是参数的数目并不是固定的,传入几个就能使用几个 int sum = 0; for(int i=0; i<nums.leng...
阅读全文
摘要:1.自动装箱/拆箱大大方便了基本类型数据和它们所对应的包装类的使用; 五十七-50:002.自动装箱/拆箱是相对于8个原生的数据类型以及它们的包装类而言的;3.Java中8个原生数据类型比较特殊,因为只有他们不是Class,不会自动继承java.lang.Object类,其余的全部是Class;4.自动装箱/拆箱操作简化了原生数据类型与对应的包装类之间的转换过程;5.自动装箱/拆箱完成了原生数据类型和对应包装类之间的自动转换过程。6.该特点的一大用处就是简化对集合中元素的操作,使得我们向集合中放置对象和从集合中取出内容的时候不用手动的在原生数据和对象数据之间进行转换,取而代之的是直接放置...
阅读全文
摘要:package cn.edu.bupt.genericinterface;import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class ForTest { public static void main(String[] args) { List<String> col = new LinkedList<String>(); col.add("one"); col.add("two"); col.add("
阅读全文
摘要:For-Each循环的加入简化了对集合或数组的遍历其语法如下:for(Type element : List) { System.out.println(element); ...}例如:1.一维数组的遍历package cn.edu.bupt.genericinterface;public class ForTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] ...
阅读全文
摘要:1.策略模式概念策略模式(Strategy Pattern)体现了两个非常基本的面向对象设计原则。 1>封装变化概念; 2>编程中使用接口,而不是对接口的实现,即面向接口编程。2.定义: 1> 定义一组算法,将每个算法都封装起来,并且使他们之间可以作为组建互相替换; 2> 策略模式使这些算法在客户端调用它们的时候能够互不影响的变化。3.意义: 1> 策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各部分之间是 松耦合的关系; 2> 若连接的特性是软件具有更强的可扩展性,易于维护;更重要的是,他大大提高了软件 的可重用性。4.策略模式的组成: 1
阅读全文
摘要:泛型方法:与泛型类型和C++中的函数模板相类似,就是将泛型定义在方法上。一个方法操作的引用数据类型不确定。如下例: 1 package cn.edu.bupt1; 2 3 public class MainTest { 4 public static void main(String[] args) { 5 GenericMethod<String> gm = new GenericMethod<String>(); 6 7 gm.show("hello,gm.show"); 8 gm.show(18); 9 ...
阅读全文
摘要:ArrayList 和 Iteratorpackage cn.edu.bupt;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class ArrayListTest { public static void main(String[] args) { //List和ArrayList是泛型 List<String> list = new ArrayList<String>(); list.add("a"); ...
阅读全文
摘要:所谓泛型,顾名思义,“广泛的类型”就是数据类型的参数化。类(或接口)是对象实例的抽象,与之类似,泛型是类的抽象;因此泛型通过传入类型实参("实例化")变成为类(或接口),类通过实例化变成具体对象。因此,ArraList是泛型,ArrayList<String>就是泛型实例化后得到的类,new ArrayList<String>() 就是同过泛型生成的类实例化后得到的对象。使用泛型的好处之一就是减少了强制类型转换引起的运行时风险,即编译正确则运行一定没有问题思想!!如果使用泛型,只要代码在编译时没有出现警告,就不会遇到运行时的“ClassCastExc
阅读全文
摘要:泛型(Generic)增强的“for”循环(Enhanced For loop)自动装箱/自动拆箱(Autoboxing/unboxing)类型安全的枚举(Type safe enums)静态导入(Static import)可变参数(Var args)对于以上这些新特性,能在程序中使用时要尽量使用。
阅读全文