设计模式-建造者模式Demo

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值