摘要: 代理的概念与作用要为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用方法时加上系统功能的代码。如果采用工厂模式和配置文件的方式进行管理,则不需要修改客户端程序,在配置文件中配置是使用目标类、还是代理类,这样以后很容易切换,譬如,想要日志功能时就配置代理类,否则配置目标类,这样,增加系统功能很容易,以后运行一段时间后,又想去掉系统功能也很容易Eg: class X { void sayHello(){}}Xproxy{//既能实施原来的类,又能得 阅读全文
posted @ 2014-02-19 14:32 fred_zhang 阅读(874) 评论(0) 推荐(0) 编辑
摘要: 类加载器用到一个类,出现了这个类的名字,那么java虚拟机首先要把这个类的字节码加载到内存里来,通常这个字节码的原始信息放在硬盘classpath指定的目录下,我们把.class里面的内容加载到内存里来,再对他进行一些处理,处理完的结果就是字节码,处理就是类加载器的作用Java虚拟机中可以安装多个加载器,系统默认三个主要类加载器,每个类负责加载特点位置的类:BootStrap,ExtClassLoader,AppClassLoader类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是java类,这正是BootStrap——用C++写的二进 阅读全文
posted @ 2014-02-19 14:24 fred_zhang 阅读(667) 评论(0) 推荐(0) 编辑
摘要: J2SE之类之间的关系继承如果子类和父类在同一个包中,则子类继承了其父类中不是private的成员变量作为自己的成员变量,而且继承了父类中不是private的方法作为自己方法。如果子类和父类在不同的包中,那么子类将不会继承父类的友好变量和友好方法及不带权限标识的方法和成员变量,如果父类里的变量不是静态变量,当我们用new出一个子类对象,当我们用set方法改变实例变量的时候,改变父类的子类会变,改变子类的父类会变。如果new另一个子类则重新获得最原始的父类的实例变量。如果是静态的实例变量,父类的实例变量的改变,用任何子类访问的实例变量都改变!接口和抽象类声明方法的存在而不去实现它的类被叫做抽象类 阅读全文
posted @ 2014-02-19 14:12 fred_zhang 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 有三种对应类型的客户:VIP客户,普通客户,快速客户 ,异步随机生成各种类型的客户,各类型客户在其对应窗口按顺序依次办理业务 。本系统一共要产生三个号码管理器对象,各自管理一类用户的排队号码。这三个号码管理器对象统一由一个号码机器进行管理,这个号码机器在整个系统中始终只能有一个,所以,它要被设计成单例。各类型客户在其对应窗口按顺序依次办理业务 ,准确地说,应该是窗口依次叫号。各个窗口怎么知道该叫哪一个号了呢?它一定是问的相应的号码管理器,即服务窗口每次找号码管理器获取当前要被服务的号码。NumberManager和NumberMachine类l NumberManager类定义一个用于存储上一 阅读全文
posted @ 2014-02-19 03:55 fred_zhang 阅读(4072) 评论(1) 推荐(0) 编辑
摘要: 总共有12条路线,为了统一编程模型,可以假设每条路线都有一个红绿灯对其进行控制。右转弯的4条路线的控制灯假设称为常绿状态,另外,其他的8条路线是两两成对的,可以归为4组,所以,程序只用考虑垂直行走状态,平行行走状态,垂直转平行状态,平行转垂直状态,这4条路线相反方向的路线的控制灯跟随这4条路线切换,不必额外考虑。在设计的时候,初步思考是南北朝向的直走,然后南北朝向的左转,然后东西朝向的直走,然后东西朝向的左转。我们初步设想一下有哪些对象:红绿灯,红绿灯控制系统,汽车,路线。另外灯是跟路线绑定的。汽车不是看到自己所在路线对应的灯绿了就穿过马路,还需要看其面前是否有车,判定是否有车的方法应该在路上 阅读全文
posted @ 2014-02-18 17:31 fred_zhang 阅读(2320) 评论(0) 推荐(0) 编辑
摘要: 泛型Jdk1.5以前的集合类中存在什么问题ArrayList collection=new ArrayList();collection.add(1);collection.add(1L);collection.add(“abc”);int 1= (Interger)arrayList.get(1);//编译要强制类型转换且运行时出错!Jdk1.5的集合类希望你在定义集合时,明确表示你要向集合中装那种类型的数据,无法加入指定类型以外的数据 ArrayList collection2=new ArrayList(); /*collection2.add(1L);Collection2.add(“ 阅读全文
posted @ 2014-02-17 23:45 fred_zhang 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 了解注解及java提供的几个基本注解1.5特性Sysetm.runFinalizersOnExit(true);//deprecated不能通过编译可以在这个方法外部加@SuppressWarnings(“deprecation”);@DeprecatedPublic static void sayHello(){}老的程序可以用,新的程序不建议用写equals可能出现的错误,java重写,除了大括号了的代码不一样,其他都应该要一样,权限要比父类的宽松或相等。在写equals方法的时候,我们很自然的会去想既然比较两个对象,我们自然的会想到,要把本类的对象传进去,其实是父类引用指向子类对象,我们 阅读全文
posted @ 2014-02-16 22:21 fred_zhang 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 反射(不是1.5的新特性)正常情况下java代码是先编译成*.class文件后再加载到虚拟机中运行的,也就是说虚拟机识别的是*.class文件格式的字节码。所以一般代码都是写好后需要经编译器编译然后向虚拟机中加载运行。但有的时候我们想在运行中即时使用一个新的类,而运行时编译的过程已经过去,怎么办,我们缺少了这个新类的字节码。这就需要用到反射,通过反射来随时动态生成一个类的.class文件,来弥补未编译的不足。通过反射来生成的字节码和编译器生成的一样可以被虚拟机认识。对虚拟机来说,他们是一样的。于是虚拟机就可以加载这个新的类的字节码继续往下走程序。ClassJava程序中的各个Java类属于同一 阅读全文
posted @ 2014-02-15 00:07 fred_zhang 阅读(313) 评论(0) 推荐(0) 编辑
摘要: myEclipse的使用技巧关eclipse可以通过任务栏里的javawEclipse是一种IDE开发工具,开发工具都支持使用工程化方式管理一个项目的程序开发过程,一般来说一个相对独立的项目就是一个工程,一个项目中涉及多个java文件,资源管理等用一个工程进行管理Javaee jde jms jmx jndiIDE—integrity development environmentFile里可以切换工作间,每个工作间的配置信息不一样在preference里的key来改快捷键Perspective透视图and viewPerspective-debug java MyeclipseView 每一 阅读全文
posted @ 2014-02-14 00:19 fred_zhang 阅读(46) 评论(0) 推荐(0) 编辑