java 开发技术
张向学
这个作者很懒,什么都没留下…
展开
-
java synchronized详解
记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object转载 2014-03-04 12:48:33 · 631 阅读 · 0 评论 -
JAVA深复制(深克隆)与浅复制(浅克隆)
原型模式提到了克隆,这里看了几篇文章,对克隆稍加分析:什么时候使用Clone? 当需要修改对象属性,又不想影响原来的属性值,这时候就应该使用clone了。 克隆是另一个作用,比如,你要传递给另一个对象的某个方法method的参数中包含A对象,但是,你不知道这个方法是不是对你的A进行了修改,而你又不想他修改,或者说他修改了也不会对你有任何影响,你就可以使用克隆来完成这个任转载 2014-03-10 11:32:49 · 670 阅读 · 0 评论 -
java 23种设计模式--建造者模式(builder)
工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。我们看一下代码: 还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender。最后,建造者类如下:public class Builder {转载 2014-03-10 10:36:50 · 662 阅读 · 0 评论 -
java23种设计模式--原型模式(prototype)
原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。本小结会通过对象的复制,进行讲解。在Java中,复制对象是通过clone()实现的,先创建一个原型类:public class Prototype implements Cloneable { public Object clon转载 2014-03-10 10:50:17 · 613 阅读 · 0 评论 -
java 23种设计模式--工厂模式(factory)
工作以来项目中用到不少设计模式,不过没有系统的总结过,下面系统分别说下各个设计模式: 1、工厂方法模式(Factory Method)工厂方法模式分为三种:11、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:举例如下:(我们举一个发送邮件和短信的例子)首先,创建二者的共同接口:[java]转载 2014-03-04 16:01:30 · 622 阅读 · 0 评论 -
java23种设计模式--适配器模式(Adapter)
我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图:6、适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器转载 2014-03-11 09:19:40 · 553 阅读 · 0 评论 -
java23种设计模式--享元模式(flyweight)
享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。 FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象,FlyWeight是超类。一提到共享池,我们很容易联想到Java里面的JDBC连接池,转载 2014-03-11 11:37:03 · 757 阅读 · 0 评论 -
java23种设计模式--外观模式(facade)
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例)我们先看下实现类:public class CPU { public void startup(){ System.out转载 2014-03-11 10:23:47 · 605 阅读 · 0 评论 -
google-gson使用解析
今天看到一个项目中用到了,gson来处理json数据,所以注意了下怎么使用,个人觉得有个是比较简单或者虽然复杂但是有规律的json数据可以使用gson来处理,如果是较复杂的json数据还是自己解析的好。这里介绍下gson的简单使用,即实体类和json数据之间的转换。1、首先是实体类到json数据的转换Person实体 public class Person { pri原创 2014-03-05 16:43:02 · 988 阅读 · 0 评论 -
java23种设计模式--单例模式(singleton)
3、单例模式(Singleton)单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该转载 2014-03-04 17:37:00 · 671 阅读 · 0 评论 -
java23种设计模式--组合模式(composite)
组合模式有时又叫部分-整体模式,在处理类似树形结构的问题时比较方便,看看关系图:直接来看代码: public class TreeNode { private String name; private TreeNode parent; private Vector children = new Vector(); public TreeN转载 2014-03-11 11:28:09 · 668 阅读 · 1 评论 -
java23种设计模式--桥接模式(bridge)
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。我们来看看关系图:实现代码转载 2014-03-11 11:05:17 · 626 阅读 · 0 评论 -
java23种设计模式--代理模式(proxy)
其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。先来看看关系图:根据上文的阐述,代理模式就比较容易的理解了,我转载 2014-03-11 09:55:47 · 658 阅读 · 0 评论 -
java23种设计模式--装饰模式(decorator)
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下:Sourceable { public void method();}public class Source转载 2014-03-11 09:25:02 · 622 阅读 · 0 评论 -
java23种设计模式--策略模式(strategy)
先来张图,看看这11种行为型模式的关系:第一类:通过父类与子类的关系进行实现。第二类:两个类之间。第三类:类的状态。第四类:通过中间类13、策略模式(strategy) 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(转载 2014-03-25 16:44:20 · 741 阅读 · 0 评论