单利 模式 个 人 理解
单例模式
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;
}
}

浙公网安备 33010602011771号