设计模式-建造者模式Demo
2016-12-13 18:43
281 查看
建造者模式- jdbc-gui
//抽象builder类
//jdbc数据库支持 -数据操作类
//具体Builder类
//指导者类-可以创建set方法
//测试类
//抽象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); } }
相关文章推荐
- 【bzoj2435】[NOI2011]道路修建 树形dp
- Log4j常用配置及使用
- Llinux下安装网易云和QQ
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
- 了解RenderScript源码(0)
- JFreeChart使用总结(四)
- 汇编(X86-64)
- Berkeley DB
- Java集合类源码分析
- oracle输出多行多列数据
- 模拟jquery的$()选择器的实现
- 设计模式之状态模式的理解运用
- Spring Boot中使用Spring Security自定义验证
- cartographer_ros+Ubuntu14.04 安装
- jboss服务僵死
- 第六章:如何对内容进行分类
- mongodb基础知识-内嵌文档相关
- Spring Boot 构建应用——整合 Elasticsearch 搜索引擎
- python---filecmp
- 地球坐标 火星坐标 百度坐标 相互转换