- 浏览: 124441 次
- 性别:
- 来自: 深圳
最新评论
文章列表
单例模式(Head First版)
- 博客分类:
- 设计模式
单例模式:确保一个类只有一个实例,并提供一个全局访问点。
代码实现:
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后面的是具体类)。绑定具体类会导致代码更脆弱,缺乏弹性。
当有一群相关类时,通常会写出这样的代码 ...
sleep和wait的区别
- 博客分类:
- 多线程
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 ...
spring(3):spring的AOP
- 博客分类:
- spring
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 ...
JAVA反射学习(2)
- 博客分类:
- java反射
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 ...
JAVA反射学习(1)
- 博客分类:
- java反射
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 ...
悲观锁是针对整个表加锁,如某个用户在更新某张表,则其它用户无法更新这张表。