java设计模式基础Word下载.docx
《java设计模式基础Word下载.docx》由会员分享,可在线阅读,更多相关《java设计模式基础Word下载.docx(18页珍藏版)》请在冰点文库上搜索。
zhansgan"
;
privatestaticSingletoninstance=null;
privateintcount=0;
static{
instance=newSingleton();
}
privateSingleton(){
System.out.println("
我是饿汉单例模式"
+count++);
publicstaticSingletongetInstance(){
returninstance;
}
Singleton1.java
//懒汉单例模式,在第一次调用的时候实例化自己
publicclassSingleton2{
publicstaticSingleton2singleton=null;
privateSingleton2(){
我是懒汉单例模式"
);
publicstaticSingleton2getInstance(){
if(singleton==null){
singleton=newSingleton2();
}
returnsingleton;
Test.java
packagecom.chinasofti.eec.test;
publicclassTest{
publicstaticvoidmain(String[]args){
/*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(){
我吃的是苹果"
Banana.java
publicclassBananaimplementsFruit{
我吃的是香蕉"
Fruit.java
publicinterfaceFruit{
publicvoideat();
importcom.chinasofti.eec.factory.Factory;
importcom.chinasofti.eec.fruit.Apple;
importcom.chinasofti.eec.fruit.Banana;
publicclassTest2{
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);
publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{
抛媚眼之前"
Objecttemp=method.invoke(this.obj,args);
抛媚眼之后"
returntemp;
}
Panjinlian.java
*被代理类
publicclassPanjinlianimplementsPrettyWomen{
publicvoidpaomeiyan(Stringname){
潘金莲抛媚眼给"
+name);
PrettyWomen.java
*定义的抛媚眼的一类人(什么事该做什么事不该做)
publicinterfacePrettyWomen{
publicvoidpaomeiyan(Stringname);
importcom.chinasofti.eec.proxy1.PrettyWomen;
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();
publicvoidpaomeiyan(){
潘金莲抛媚眼........"
publicvoidpaomeiyan();
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;
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL,USER,PASSWORLD);
privateJDBCutil(){
publicstaticConnectiongetConnection(){
returnconn;
publicstaticvoidmain(String[]args){
System.out.println(JDBCutil.getConnection());
JDBCutil2.java
importjava.sql.SQLException;
publicclassJDBCutil2{
privatestaticJDBCutil2jdbc=null;
privateJDBCutil2(){
/*publicstaticJDBCutil2getInstance(){
if(jdbc==null){
jdbc=newJDBCutil2();
returnjdbc;
}*/
publicsynchronizedstaticConnectiongetConnection()throwsException{
Class.forName(DRIVER);
if(conn==null){
JDBC登录链接数据库
1链接数据库
@192.168.80.22:
0"
privatestaticJDBCutiljdbc=null;
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;
publicStringtoString(){
return"
User[id="
+id+"
name="
+name+"
birthday="
+birthday+"
]"
3登录功能接口
UserDao.java
packagecom.chinasofti.eec.dao;
publicinterfaceUserDao{
booleanLoginInfo(Stringname,Stringpwd);
UserImpl.java
importjava.sql.ResultSet;
importjava.sql.Statement;
importcom.chinasofti.eec.jdbcutil.JDBCutil;
publicclassUserImplimplementsUserDao{
privatestaticConnectionconn=null;
privatestaticStatements=null;
privatestaticResultSetrs=null;
publicbooleanLoginInfo(Stringname,Stringpwd){
booleanflag=false;
Stringsql="
select*fromCHAOSHENXUEYUANwherelast_name="
+"
'
"
+name+"
andpwd="
+pwd;
System.out.println(sql);
conn=JDBCutil.getConnection();
s=conn.createStatement();
rs=s.executeQuery(sql);
if(rs.next()){
flag=true;
}else{
flag=false;
}
returnflag;
4服务接口降低耦合度
UserService.java
packagecom.chinasofti.eec.service;
publicinterfaceUserService{
booleanloginInfo(Stringname,Stringpwd);
UserServiceImpl.java
importcom.chinasofti.eec.dao.UserDao;
importcom.chinasofti.eec.dao.UserImpl;
publicclassUserServiceImplimplementsUserService{
publicbooleanloginInfo(Stringn,Stringp){
UserDaoud=newUserImpl();
booleanfalg=ud.LoginInfo(n,p);
returnfalg;
5视图层
importj