设计模式-建造者模式Demo

来源:互联网 发布:pdf提取文字软件 编辑:程序博客网 时间:2024/06/03 11:15

建造者模式- 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));            }            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);    }}

这里写图片描述
这里写图片描述

0 0