java设计模式基础.docx

上传人:b****2 文档编号:10210 上传时间:2023-04-28 格式:DOCX 页数:18 大小:18.57KB
下载 相关 举报
java设计模式基础.docx_第1页
第1页 / 共18页
java设计模式基础.docx_第2页
第2页 / 共18页
java设计模式基础.docx_第3页
第3页 / 共18页
java设计模式基础.docx_第4页
第4页 / 共18页
java设计模式基础.docx_第5页
第5页 / 共18页
java设计模式基础.docx_第6页
第6页 / 共18页
java设计模式基础.docx_第7页
第7页 / 共18页
java设计模式基础.docx_第8页
第8页 / 共18页
java设计模式基础.docx_第9页
第9页 / 共18页
java设计模式基础.docx_第10页
第10页 / 共18页
java设计模式基础.docx_第11页
第11页 / 共18页
java设计模式基础.docx_第12页
第12页 / 共18页
java设计模式基础.docx_第13页
第13页 / 共18页
java设计模式基础.docx_第14页
第14页 / 共18页
java设计模式基础.docx_第15页
第15页 / 共18页
java设计模式基础.docx_第16页
第16页 / 共18页
java设计模式基础.docx_第17页
第17页 / 共18页
java设计模式基础.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

java设计模式基础.docx

《java设计模式基础.docx》由会员分享,可在线阅读,更多相关《java设计模式基础.docx(18页珍藏版)》请在冰点文库上搜索。

java设计模式基础.docx

java设计模式基础

单例模式:

一个类中只能有一个实例

单例类的特点:

1)单例类只可有一个实例

2)它必须自己创立这唯一的一个实例

3)它必须给所有其它的类提供自己这一实例

两种实现方式:

1)饿汉式:

加载类的时候就初始化一个实例

2)懒汉式:

加载类的时候不初始化,当第一次使用实例时才初始化

总结单例模式:

构造方法是private权限,保证其他类无法创建该类实例,只能该类自身创建

声明一个static修饰的自身实例,保证该实例永远只是一个

提供一个public方法,返回定义的static自身实例

工厂模式:

为了代码这件的解耦

比如说Aa=newA();多处用到a对象现在想把A对象换成B对象把A对象的所有的代码都需要更改

就可以把生成对象的功能放在工厂里面,

单例模式

Singleton.java

packagecom.chinasofti.eec.singleton;

//饿汉单例模式,在初始化的时候,已经自己实例化了

publicclassSingleton{

publicStringname="zhansgan";

privatestaticSingletoninstance=null;

privateintcount=0;

static{

instance=newSingleton();

}

privateSingleton(){

System.out.println("我是饿汉单例模式"+count++);

}

publicstaticSingletongetInstance(){

returninstance;

}

}

Singleton1.java

packagecom.chinasofti.eec.singleton;

//懒汉单例模式,在第一次调用的时候实例化自己

publicclassSingleton2{

publicstaticSingleton2singleton=null;

privateSingleton2(){

System.out.println("我是懒汉单例模式");

}

publicstaticSingleton2getInstance(){

if(singleton==null){

singleton=newSingleton2();

}

returnsingleton;

}

}

Test.java

packagecom.chinasofti.eec.test;

publicclassTest{

publicstaticvoidmain(String[]args){

/*Singleton2.getInstance();

Singleton2.getInstance();

Singleton2.getInstance();*/

/*System.out.println(Runtime.getRuntime());

System.out.println(Runtime.getRuntime());*/

}

}

2工厂模式

Factory.java

packagecom.chinasofti.eec.factory;

importcom.chinasofti.eec.fruit.Fruit;

publicclassFactory{

publicstaticFruitgetInstance(Class

>c){

Fruitfruit=null;

try{

fruit=(Fruit)Class.forName(c.getName()).newInstance();

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnfruit;

}

}

Apple.java

packagecom.chinasofti.eec.fruit;

publicclassAppleimplementsFruit{

@Override

publicvoideat(){

System.out.println("我吃的是苹果");

}

}

Banana.java

packagecom.chinasofti.eec.fruit;

publicclassBananaimplementsFruit{

@Override

publicvoideat(){

System.out.println("我吃的是香蕉");

}

}

Fruit.java

packagecom.chinasofti.eec.fruit;

publicinterfaceFruit{

publicvoideat();

}

Test.java

packagecom.chinasofti.eec.test;

importcom.chinasofti.eec.factory.Factory;

importcom.chinasofti.eec.fruit.Apple;

importcom.chinasofti.eec.fruit.Banana;

publicclassTest2{

publicstaticvoidmain(String[]args){

Factory.getInstance(Apple.class).eat();

Factory.getInstance(Banana.class).eat();

}

}

3代理模式

3-1代理类

MyInvocationHandler.java

packagecom.chinasofti.eec.proxy1;

importjava.lang.reflect.InvocationHandler;

importjava.lang.reflect.Method;

importjava.lang.reflect.Proxy;

/**

*代理类

*@authorAdministrator

*

*/

publicclassMyInvocationHandlerimplementsInvocationHandler{

privateObjectobj;//被代理对象

publicObjectbind(Objectobj){

this.obj=obj;//初始化被代理对象

//动态的返回一个代理类,统一调用invoke()确定此对象实现的接口实例

returnProxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this);

}

@Override

publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{

System.out.println("抛媚眼之前");

Objecttemp=method.invoke(this.obj,args);

System.out.println("抛媚眼之后");

returntemp;

}

}

Panjinlian.java

packagecom.chinasofti.eec.proxy1;

/**

*被代理类

*@authorAdministrator

*

*/

publicclassPanjinlianimplementsPrettyWomen{

@Override

publicvoidpaomeiyan(Stringname){

System.out.println("潘金莲抛媚眼给"+name);

}

}

PrettyWomen.java

packagecom.chinasofti.eec.proxy1;

/**

*定义的抛媚眼的一类人(什么事该做什么事不该做)

*@authorAdministrator

*

*/

publicinterfacePrettyWomen{

publicvoidpaomeiyan(Stringname);

}

Test.java

packagecom.chinasofti.eec.proxy1;

importcom.chinasofti.eec.proxy1.PrettyWomen;

publicclassTest{

publicstaticvoidmain(String[]args){

PrettyWomenpw=(PrettyWomen)newMyInvocationHandler().bind(newPanjinlian());

pw.paomeiyan("西门庆");

}

}

3-2被代理类

Wangpo.java

packagecom.chinasofti.eec.proxy;

publicclassWangPoimplementsPrettyWomen{

privatePrettyWomenpw=null;

publicWangPo(){

super();

}

publicWangPo(PrettyWomenpw){

this.pw=pw;

}

publicvoidpaomeiyan(){

this.pw.paomeiyan();

}

}

Panjinlian.java

packagecom.chinasofti.eec.proxy;

/**

*被代理类

*@authorAdministrator

*

*/

publicclassPanjinlianimplementsPrettyWomen{

@Override

publicvoidpaomeiyan(){

System.out.println("潘金莲抛媚眼........");

}

}

PrettyWomen.java

packagecom.chinasofti.eec.proxy;

/**

*定义的抛媚眼的一类人(什么事该做什么事不该做)

*@authorAdministrator

*

*/

publicinterfacePrettyWomen{

publicvoidpaomeiyan();

}

Test.java

packagecom.chinasofti.eec.proxy;

publicclassTest{

publicstaticvoidmain(String[]args){

WangPowp=newWangPo(newPanjinlian());

wp.paomeiyan();

}

}

链接数据库

JDBCutil.java

packagecom.chinasofti.eec.jdbcutil;

/**

*链接数据库的工具类

*/

importjava.sql.Connection;

importjava.sql.DriverManager;

publicclassJDBCutil{

publicstaticfinalStringDRIVER="oracle.jdbc.driver.OracleDriver";//orcale驱动

publicstaticfinalStringURL="jdbc:

oracle:

thin:

@localhost:

1521:

XE";//数据库的url

publicstaticfinalStringUSER="system";//用户名

publicstaticfinalStringPASSWORLD="gqk";//密码

privatestaticJDBCutilutil=null;

privatestaticConnectionconn=null;

static{

try{

Class.forName(DRIVER);

conn=DriverManager.getConnection(URL,USER,PASSWORLD);

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

privateJDBCutil(){

}

publicstaticConnectiongetConnection(){

returnconn;

}

publicstaticvoidmain(String[]args){

System.out.println(JDBCutil.getConnection());

}

}

JDBCutil2.java

packagecom.chinasofti.eec.jdbcutil;

/**

*链接数据库的工具类

*/

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.SQLException;

publicclassJDBCutil2{

publicstaticfinalStringDRIVER="oracle.jdbc.driver.OracleDriver";//orcale驱动

publicstaticfinalStringURL="jdbc:

oracle:

thin:

@localhost:

1521:

XE";//数据库的url

publicstaticfinalStringUSER="system";//用户名

publicstaticfinalStringPASSWORLD="gqk";//密码

privatestaticJDBCutil2jdbc=null;

privatestaticConnectionconn=null;

privateJDBCutil2(){

}

/*publicstaticJDBCutil2getInstance(){

if(jdbc==null){

jdbc=newJDBCutil2();

}

returnjdbc;

}*/

publicsynchronizedstaticConnectiongetConnection()throwsException{

Class.forName(DRIVER);

if(conn==null){

conn=DriverManager.getConnection(URL,USER,PASSWORLD);

}

returnconn;

}

}

 

JDBC登录链接数据库

1链接数据库

JDBCutil.java

packagecom.chinasofti.eec.jdbcutil;

/**

*链接数据库的工具类

*/

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.SQLException;

publicclassJDBCutil{

publicstaticfinalStringDRIVER="oracle.jdbc.driver.OracleDriver";//orcale驱动

publicstaticfinalStringURL="jdbc:

oracle:

thin:

@192.168.80.22:

1521:

XE";//数据库的url

publicstaticfinalStringUSER="system";//用户名

publicstaticfinalStringPASSWORLD="0";//密码

privatestaticJDBCutiljdbc=null;

privatestaticConnectionconn=null;

privateJDBCutil(){

}

publicsynchronizedstaticConnectiongetConnection()throwsException{

Class.forName(DRIVER);

if(conn==null){

conn=DriverManager.getConnection(URL,USER,PASSWORLD);

}

returnconn;

}

publicstaticvoidmain(String[]args)throwsException{

System.out.println(getConnection());

}

}

2实体类

User.java

packagecom.chinasofti.eec.vo;

importjava.sql.Date;

publicclassUser{

privateintid;

privateStringname;

privateDatebirthday;

privateStringpwd;

publicStringgetPwd(){

returnpwd;

}

publicvoidsetPwd(Stringpwd){

this.pwd=pwd;

}

publicintgetId(){

returnid;

}

publicvoidsetId(intid){

this.id=id;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicDategetBirthday(){

returnbirthday;

}

publicvoidsetBirthday(Datebirthday){

this.birthday=birthday;

}

@Override

publicStringtoString(){

return"User[id="+id+",name="+name+",birthday="+birthday+"]";

}

}

3登录功能接口

UserDao.java

packagecom.chinasofti.eec.dao;

publicinterfaceUserDao{

booleanLoginInfo(Stringname,Stringpwd);

}

UserImpl.java

packagecom.chinasofti.eec.dao;

importjava.sql.Connection;

importjava.sql.ResultSet;

importjava.sql.Statement;

importcom.chinasofti.eec.jdbcutil.JDBCutil;

publicclassUserImplimplementsUserDao{

privatestaticConnectionconn=null;

privatestaticStatements=null;

privatestaticResultSetrs=null;

@Override

publicbooleanLoginInfo(Stringname,Stringpwd){

booleanflag=false;

Stringsql="select*fromCHAOSHENXUEYUANwherelast_name="+"'"+name+"'"+"andpwd="+pwd;

System.out.println(sql);

try{

conn=JDBCutil.getConnection();

s=conn.createStatement();

rs=s.executeQuery(sql);

if(rs.next()){

flag=true;

}else{

flag=false;

}

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnflag;

}

}

4服务接口降低耦合度

UserService.java

packagecom.chinasofti.eec.service;

publicinterfaceUserService{

booleanloginInfo(Stringname,Stringpwd);

}

UserServiceImpl.java

packagecom.chinasofti.eec.service;

importcom.chinasofti.eec.dao.UserDao;

importcom.chinasofti.eec.dao.UserImpl;

publicclassUserServiceImplimplementsUserService{

@Override

publicbooleanloginInfo(Stringn,Stringp){

UserDaoud=newUserImpl();

booleanfalg=ud.LoginInfo(n,p);

returnfalg;

}

}

5视图层

packagecom.chinasofti.eec.test;

importj

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2