单利 模式 个 人 理解

单例模式
       public void ClassA
               {
                  private String ss;
                  private Static ClassA   s;
                  private ClassA()
                   {
                      s=new ClassA();
                    }
                 private Static  ClassA  getClassA()
                      {
                           if(s==null)
                                {
                                  s=new ClassA(); 
                                  }
                               return s;
                          }
               } 
这个 是其中的懒汉式 ----------它可以保证 ClassA只 被实例一次 就是当类加加载时才进行
实例这是 我 写的用 java   Swing 实现的单例
//////这是主函数
  package com.wepull.fream;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class LoginSwing extends JFrame{
 
 private JDBC jdbcO=new JDBC();
 
// Toolkit t = Toolkit.getDefaultToolkit();
// Image img =  t.getImage("D://123.gif");
 
//   @Override
// public void paint(Graphics g) {
//  g.setColor(Color.RED);
//  System.out.println(img);
//  //g.drawImage(img,30,20,null);
// }

public LoginSwing()
   {
    this.setTitle("Login");
    this.setBounds(100, 100, 400, 300);
    this.setResizable(false);
    this.initCompute();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   // this.setBackground(Color.GREEN);
    this.setVisible(true);
   }
 
   public void initCompute()
   {
    //得到内容窗格
  
    Container cont=getContentPane();
    ControlCollection contColl= ControlCollection.getControl();
    cont.setLayout(null);
    ButtonListen  bList=new ButtonListen();
   
    JLabel label = new JLabel();
    label.setIcon(new ImageIcon(ClassLoader.getSystemResource("renren.png")));
    label.setBounds(0, 0, 300, 100);
   
    contColl.getUse().setBounds(30, 100, 60, 40);
    contColl.getPw().setBounds(30,120, 60, 40);
    contColl.getTuse().setBounds(90, 100, 200, 30);
    contColl.getTpw().setBounds(90, 130, 200, 30);
    contColl.getLogin().setBounds(100, 210, 80, 30);
    contColl.getCanel().setBounds(200, 210, 80, 30);
    contColl.getRegist().setBounds(300, 210, 80, 30);
   
    contColl.getLogin().addActionListener(bList);
    contColl.getCanel().addActionListener(bList);
    contColl.getRegist().addActionListener(bList);
   
    cont.add(contColl.getUse());
    cont.add(contColl.getPw());
    cont.add(contColl.getTuse());
    cont.add(contColl.getTpw());
    cont.add(contColl.getLogin());
    cont.add( contColl.getCanel());
    cont.add( contColl.getRegist());
    cont.add(label);
   
   }
    class ButtonListen implements  ActionListener{


  public void actionPerformed(ActionEvent e) {
   ControlCollection contColl= ControlCollection.getControl();
   String str=e.getActionCommand();
   String UserName=getString(contColl.getTuse().getText());
   String pws=getString(contColl.getTpw().getText());
   jdbcO.Star();
   if(!UserName.equals("")&&!pws.equals(""))
   {
   if(str.equals("登陆"))  //判断事件源
   {
    if(jdbcO.selectBynameAndPw(UserName, pws))
    {
      JOptionPane.showMessageDialog(null,"登陆成功");
    }
    else
    {
      JOptionPane.showMessageDialog(null,"登陆失败");
    }
   }
   else if(str.equals("取消"))
   {
    System.exit(0);
   }
   else if(str.equals("注册"))
   {
    if(jdbcO.Inser(UserName, pws))
    {
      JOptionPane.showMessageDialog(null,"注册成功");
    }
    else
    {
      JOptionPane.showMessageDialog(null,"注册失败");
    }
   }
   }
   else
   {
    JOptionPane.showMessageDialog(null,"密码和用户名不能为空");
   }
   jdbcO.stop();
  }
  public String getString(String str)
  {
   str=str.replace(" ","");
   return str;
  }
     
    }
   public static void main(String[] args) {
 new LoginSwing();
}
}
////////////////////////  控件集 单例
     package com.wepull.fream;

import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class ControlCollection {

 private JLabel use =null;

 private JLabel pw = null;
 private JTextField tuse =null;
 private JPasswordField tpw = null;
 private JButton login = null;
 private JButton canel = null;
 private JButton regist = null;
 private static ControlCollection con=null;
 
 private  ControlCollection()
 {
   use = new JLabel("用户名:");
   pw = new JLabel("密   码:");
   tuse = new JTextField();
   tpw = new JPasswordField();
   login=new JButton("登陆");
   canel = new JButton("取消");
   regist = new JButton("注册");
 }
 public static ControlCollection getControl()
 {
  if(con==null)
  {
   con=new ControlCollection();
  }
  return con;
 }
 
 public JLabel getUse() {
  return use;
 }
 
 public void setUse(JLabel use) {
  this.use = use;
 }
 public JLabel getPw() {
  return pw;
 }
 public void setPw(JLabel pw) {
  this.pw = pw;
 }
 public JTextField getTuse() {
  return tuse;
 }
 public void setTuse(JTextField tuse) {
  this.tuse = tuse;
 }
 public JPasswordField getTpw() {
  return tpw;
 }
 public void setTpw(JPasswordField tpw) {
  this.tpw = tpw;
 }
 public JButton getLogin() {
  return login;
 }
 public void setLogin(JButton login) {
  this.login = login;
 }
 public JButton getCanel() {
  return canel;
 }
 public void setCanel(JButton canel) {
  this.canel = canel;
 }
 public JButton getRegist() {
  return regist;
 }
 public void setRegist(JButton regist) {
  this.regist = regist;
 }
}
/////////////////////////JDBC
package com.wepull.fream;

import java.sql.*;

import javax.swing.JOptionPane;

public class JDBC {
 
 private  Connection conn=null;
 private  String sqlQuery="";
 private PreparedStatement rs=null;
      public JDBC()
      {}
      public void Star()
      {
       try {
   Class.forName("com.mysql.jdbc.Driver");
   conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/my_db","root","123");
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
      }
      public void stop()
      {
       try {
   conn.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
      }
      public boolean selectBynameAndPw(String name,String pw)
      {
       sqlQuery="select * from users where username=? and password=?";
       try {
         rs=conn.prepareStatement(sqlQuery);
         rs.setString(1, name);
         rs.setString(2, pw);
         ResultSet retur=rs.executeQuery();
         if(retur.next())
         {
          return true;
         
         }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
       return false;
      }
      public boolean Inser(String name,String pw)
      {
       sqlQuery="insert into users (username,password)values(?,?)";
       try {
         rs=conn.prepareStatement(sqlQuery);
         rs.setString(1, name);
         rs.setString(2, pw);
         int retur=rs.executeUpdate();
         if(retur>0)
         {
          return true;
         }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
       return false;
      }
}

posted @ 2011-07-23 07:59  嘎空间  阅读(237)  评论(0)    收藏  举报