`
文章列表
单例模式:确保一个类只有一个实例,并提供一个全局访问点。 代码实现: package com.headfirst.chapter5; public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(singleton == null){ singleton = new Singleton(); } return singleton; } }     ...
接着上一篇说过的工厂方法,这节来谈一谈抽象工厂: 首先来看一个设计原则 依赖倒置原则:要依赖抽象,不要依赖具体类。不能让高层组件依赖低层组件,而且,不管高层或低层组件,“两者”都应该依赖于抽象。   再回到比萨店: 使用工厂方法后,各地的比萨加盟店生意火爆,但也有些加盟店使用劣质原料,导致信誉下降。 现在我们要创建一个工厂来生产原料,这个工厂负责创建原料家族中的每一种原料。 先来为原料工厂定义一个接口 public interface PizzaIngredientFactory{ public Dough createDough(); public Sauce cr ...
还是利用比萨店的例子,我们来看看一般工厂模式: 如果比萨店有许多加盟店,并且这些加盟店必须严格按照总部的要求生产比萨。 比如烘烤、切片、打包的方式。但允许加盟店根据各地的特色制作比萨。这要如何实现?   我们可以定义一个抽象类PizzaStore,这个类中有两个方法 orderPizza和createPizza,其中createPizza是抽象的。由子类来具体实现。 在orderPizza方法中定义比萨店的框架。 package com.headfirst.chapter4; public abstract class PizzaStore { public Pizza ...
为什么要使用工厂模式? 先看一个例子:   Duck duck = new MallardDuck();//野鸭    我们在实例化的时候,用的是具体类(new后面的是具体类)。绑定具体类会导致代码更脆弱,缺乏弹性。 当有一群相关类时,通常会写出这样的代码 ...
1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。 sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。 2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等 ...
本节主要通过一个小例子来讲解spring,struts,hibernate的结合:   例:增删改查用户: 操作列表:保存用户或显示所有用户,如下图   新增用户界面   显示所有用户列表 修改用户:     以下是代码实现,此工程所需的JAR包及配置与前几节一样 User对应的bean,user有id,age,firstname,lastname四个属性: package com.test.bean; public class User { private int id; private int age; private String f ...
本节主要讲述hibernate与spring整合: 1,首先在数据库中创建person表: 包括id,name,age三个字段 2,创建一个WEB工程,导入hibernate与spring相关的jar包:除此外还要导入数据库连接池与mysql驱动相关的包,如下图所示:   3:代码:   PersonBean.java package lee; public class PersonBean { private int id; private String name; private int age; public int getId() { re ...
        1               下面看具体的例子: 定义Person接口,声明两个方法 package lee; public interface Person { void info(); void run(); }   具体的实现类 package lee; public class PersonImpl implements Person { pri ...
本节主讲将struts与spring进行整合: 1,新建一个WEB工程:工程名为strutsspring,在其src目录上新建struts.xml配置文件      将struts相关的7个JAR包,拷至工程的WebRoot/Web-inf/lib目录下      2,配置 Web.xml文件,加上struts的过滤 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.co ...
  package com.langsin.reflection; import java.lang.reflect.Method; public class InvokeTest { public int add(int a,int b){ return a+b; } public String eoch(String s){ return "eoch "+s; } public static void main(String[] args) throws Exception{ Class<?&g ...
    1,抽象角色 package com.langsin.proxy; //抽象角色 public abstract class Subject { abstract public void request(); }   2,真实角色 package com.langsin.proxy; //真实角色 public class RealSubject extends Subject{ public RealSubject() { } public void request(){ System.out.println(&quo ...
        1     package com.langsin.reflection; import java.lang.reflect.Method; public class DumpMethods { public static void main(String[] args)throws Exception { //加载并初始化命令行参数指定的类 Class<?> classType = Class.forName(args[0]); //得到当前类声明的所有方法,包括private Method ...
http://mynote.iteye.com/admin/blogs/1174520 先看看上面这个简单工厂的例子:   spring的IOC类似于简单工厂,为客户端生成实例:将上面的简单工厂改为spring实现,如下:   Person接口 package com.test; public interface Person { public String sayHello(String name); public String sayGoodbye(String name); }   Chinese package com.test; public ...
      代码示例: 定义一个Person接口 package com.test.simplefactory; public interface Person { public String sayHello(String name); public String sayGoodbye(String name); }   定义两个具体类,分别实现Person接口 package com.test.simplefactory; public class Chinese implements Person { public String ...
          悲观锁是针对整个表加锁,如某个用户在更新某张表,则其它用户无法更新这张表。    
Global site tag (gtag.js) - Google Analytics