设计模式-建造者模式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
- 设计模式-建造者模式Demo
- 设计模式-------建造者
- 设计模式-建造者
- 建造者设计模式
- 建造者设计模式
- 建造者设计模式
- 设计模式-建造者
- 建造者设计模式
- 建造者设计模式
- 建造者设计模式
- [设计]建造者模式
- 设计模式:建造者模式
- 设计模式---建造者模式
- 设计模式---建造者模式
- 设计模式-----建造者模式
- 设计模式-【建造者模式】
- 设计模式--建造者模式
- 设计模式建造者模式
- JFreeChart使用总结(四)
- 了解RenderScript源码(0)
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
- 查询缓存---Mybatis学习笔记(十)
- pat甲1120. Friend Numbers(水题string+set)
- 设计模式-建造者模式Demo
- Hbase
- appium+python测试app使用相对坐标定位元素
- 导航下拉菜单Css实现
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
- mysql 查询动态所属标签下的动态各有多少条
- android使用HttpURLConnection实现带参数文件上传
- 转发和重定向的区别
- STM32 学习方法