您的位置:首页 > 其它

设计模式-建造者模式Demo

2016-12-13 18:43 281 查看
建造者模式- jdbc-gui

//抽象builder类

public abstract class UIBuilder {
protected JPanel panel =new JPanel();
abstract public void addUI();
abstract public void registerMsg();
abstract public void initialData(String user);
public JPanel getPanel(){
return panel;
}
}


//jdbc数据库支持 -数据操作类

public class DbProc {
private String strDriver = "com.mysql.jdbc.Driver";
private String strDb = "jdbc:mysql://localhost:3306/test";
private String strUser = "root";
private String strPwd ="1234";
private Connection conn;
public Connection connect() throws Exception {
Class.forName(strDriver);
conn = DriverManager.getConnection(strDb,strUser,strPwd);
return conn;
}
//更新信息
public int executeUpdate(String strSQL)throws Exception {
Statement stm =conn.createStatement();
int n = stm.executeUpdate(strSQL);
stm.close();
return n;
}
//增删改查
public  List executeQuery(String strSQL)throws Exception {
List list =new Vector();
Statement stm = conn.createStatement();
ResultSet rst =stm.executeQuery(strSQL);
ResultSetMetaData rsmd = rst.getMetaData();
while(rst.next()){
Vector unit = new Vector();
for(int i=1;i<=rsmd.getColumnCount();i++){
unit.add(rst.getString(i));
}

4000
list.add(unit);
}
return list;
}
public void close() throws Exception {
conn.close();
}
}


//具体Builder类

public class StudentBuilder extends UIBuilder implements ActionListener{
String user;
JTextField studName = new JTextField(10);
JTextField studAge = new JTextField(10);
JTextField studMajor = new JTextField(10);
JTextField studDepart = new JTextField(10);
JButton updateBtn = new JButton("update");
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String name =studName.getText();
String age =studAge.getText();
String major = studMajor.getText();
String depart = studDepart.getText();
System.out.println(depart);
String strSQL = "update student set name='"+name+"',age="+age+",major='"+major+"',depart='"+depart+"'"+"where user='"+user+"'";
try{
DbProc dbobj = new DbProc();
dbobj.connect();
dbobj.executeUpdate(strSQL);
dbobj.close();
}catch(Exception e){

}
}
@Override
public void addUI() {
// TODO Auto-generated method stub
JPanel center = new JPanel();
JPanel south = new JPanel();
Box b = Box.createVerticalBox();
b.add(new JLabel("姓名"));b.add(Box.createVerticalStrut(8));
b.add(new JLabel("年龄"));b.add(Box.createVerticalStrut(8));
b.add(new JLabel("专业"));b.add(Box.createVerticalStrut(8));
b.add(new JLabel("学院"));b.add(Box.createVerticalStrut(8));
Box b2 = Box.createVerticalBox();
b2.add(studName);b2.add(Box.createVerticalStrut(8));
b2.add(studAge);b2.add(Box.createVerticalStrut(8));
b2.add(studMajor);b2.add(Box.createVerticalStrut(8));
b2.add(studDepart);b2.add(Box.createVerticalStrut(8));
center.add(b);center.add(b2);
south.add(updateBtn);
panel.setLayout(new BorderLayout());
panel.add(center, BorderLayout.CENTER);
panel.add(south, BorderLayout.SOUTH);

}
@Override
public void registerMsg() {
// TODO Auto-generated method stub
updateBtn.addActionListener(this);

}
@SuppressWarnings("rawtypes")
@Override
public void initialData(String user) {
// TODO Auto-generated method stub
this.user = user;
String strSQL ="select name,age,major,depart from student where user ='"+user+"'";
DbProc dbobj = new DbProc();
try{
dbobj.connect();
List list =(List)dbobj.executeQuery(strSQL);
System.out.println("list="+list.toString());
Vector vector = (Vector)list.get(0);
studName.setText((String)vector.get(0));
studAge.setText((String)vector.get(1));
studMajor.setText((String)vector.get(2));
studDepart.setText((String)vector.get(3));
dbobj.close();
}catch(Exception e){}

}

}


//指导者类-可以创建set方法

public class Director {
private UIBuilder build;
public Director(UIBuilder builder){
this.build = builder;
}
public JPanel builder(String user){
build.addUI();
build.registerMsg();
build.initialData(user);
return build.getPanel();
}
}


//测试类

public class Test {
public static void main(String[] args){
JFrame frm =new JFrame();
UIBuilder ub = new StudentBuilder();
Director director = new Director(ub);
JPanel panel = director.builder("1");
frm.add(panel);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.pack();
frm.setVisible(true);
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: