软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 开发杂谈 -> 生成器模式 -> 正文阅读
开发杂谈 最新文章
BloomFilter
大学四年编程之历程
内核分析
造人论坛——意识的本质和一个人工脑模型
OFDM信号[matlab描述]
人类还会进化吗?
HDUACM1035RobotMotion简单模拟题
树、二叉树(二)
iisphpweb.config处理404,500等,跳转友好
DatabaseAsaFortress

[开发杂谈]生成器模式

  2016-04-03 20:47:25

生成器模式:将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示(Separate the construction of a complex object from its representation so that the same construction process can create different representations)。
生成器模式结构中的四种角色。
产品(Product): 所要构建的复杂对象。
抽象生成器(Builder): 抽象生成器是一个接口,该接口除了为创建一个Product对象的各个组件定义若干个方法外,还要定义返回Product对象的方法。
具体生成器(ConcreteBuilder): 实现Buidler接口的类。
指挥者(Director): 指挥者是一个类,该类需含有Builder接口申明的变量,指挥者的职责是负责向用户提供具体的生成器,利用具体生成器构造复杂的Product对象。
 
代码如下:
Product类:

 1 package cn.zj.qiao.designPattern.builder;
 2 
 3 import javax.swing.JButton;
 4 import javax.swing.JLabel;
 5 import javax.swing.JPanel;
 6 import javax.swing.JTextField;
 7 
 8 public class PanelProduct extends JPanel {
 9     /**
10      * 
11      */
12     private static final long serialVersionUID = 1L;
13     JButton button;
14     JLabel label;
15     JTextField textField;
16 }


Builder 接口:

 1 package cn.zj.qiao.designPattern.builder;
 2 
 3 import javax.swing.JButton;
 4 import javax.swing.JLabel;
 5 import javax.swing.JPanel;
 6 import javax.swing.JTextField;
 7 
 8 public class PanelProduct extends JPanel {
 9     /**
10      * 
11      */
12     private static final long serialVersionUID = 1L;
13     JButton button;
14     JLabel label;
15     JTextField textField;
16 }


ConcreteBuilder 如下两个类(ConcreteBuilderOne和ConcreteBuilderTwo):

 1 package cn.zj.qiao.designPattern.builder;
 2 
 3 
 4 import javax.swing.JButton;
 5 import javax.swing.JLabel;
 6 import javax.swing.JPanel;
 7 import javax.swing.JTextField;
 8 
 9 public class ConcreteBuilderOne implements Builder {
10     private PanelProduct panel;    //创建需要的容器
11     
12     ConcreteBuilderOne(){
13         panel = new PanelProduct();
14     }
15     @Override
16     public void buildButton() {
17         panel.button = new JButton("btn");
18 
19     }
20 
21     @Override
22     public void buildLabel() {
23         panel.label = new JLabel("lable");
24 
25     }
26 
27     @Override
28     public void buildTextField() {
29         panel.textField = new JTextField("hello");
30 
31     }
32 
33     @Override
34     public JPanel getPanel() {
35         panel.add(panel.button);
36         panel.add(panel.label);
37         panel.add(panel.textField);
38         return panel;
39     }
40 
41 }
42 
43 
44 package cn.zj.qiao.designPattern.builder;
45 
46 import javax.swing.JButton;
47 import javax.swing.JLabel;
48 import javax.swing.JPanel;
49 import javax.swing.JTextField;
50 
51 public class ConcreteBuilderTwo implements Builder {
52     private PanelProduct panel;
53     
54     ConcreteBuilderTwo(){
55         panel = new PanelProduct();
56     }
57     @Override
58     public void buildButton() {
59         panel.button = new JButton("btn");
60 
61     }
62 
63     @Override
64     public void buildLabel() {
65         panel.label = new JLabel("label");
66 
67     }
68 
69     @Override
70     public void buildTextField() {
71         panel.textField = new JTextField("helo");
72 
73     }
74 
75     @Override
76     public JPanel getPanel() {
77         panel.add(panel.textField);
78         panel.add(panel.label);
79         panel.add(panel.button);
80         return panel;
81     }
82 
83 }


Director类:

 1 package cn.zj.qiao.designPattern.builder;
 2 
 3 import javax.swing.JPanel;
 4 
 5 public class Director {
 6     private Builder builder;
 7     
 8     Director(Builder builder){
 9         this.builder = builder;
10     }
11     
12     public JPanel constructProduct(){
13         builder.buildButton();
14         builder.buildLabel();
15         builder.buildTextField();
16         return     builder.getPanel();
17     }
18 }


下面是测试代码:

 1 package cn.zj.qiao.designPattern.builder;
 2 
 3 import java.awt.Container;
 4 
 5 import javax.swing.JFrame;
 6 import javax.swing.JPanel;
 7 
 8 public class Application {
 9     public static void main(String[] args){
10             Builder builder = new ConcreteBuilderOne();
11             Director dir = new Director(builder);
12             JPanel panel = dir.constructProduct();
13             JFrame frameOne = new JFrame("hello");
14             Container con = frameOne.getContentPane();
15             con.add(panel);
16             frameOne.setBounds(12, 12, 200, 120);
17             frameOne.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
18             frameOne.setVisible(true);
19             
20             builder = new ConcreteBuilderTwo();
21             dir = new Director(builder);
22             panel = dir.constructProduct();
23             JFrame frameTwo = new JFrame("hello");
24             con = frameTwo.getContentPane();
25             con.add(panel);
26             frameTwo.setBounds(222, 12, 200, 120);
27             frameTwo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
28             frameTwo.setVisible(true);
29             
30         }
31 }


 
 
人生最可贵的事情是sb似的坚持于追求……
上一篇文章      下一篇文章      查看所有文章
2016-04-03 20:46:48  
360图书馆 论文大全 母婴/育儿 软件开发资料 网页快照 文字转语音 购物精选 软件 美食菜谱 新闻中心 电影下载 小游戏 Chinese Culture
生肖星座解梦 人民的名义 人民的名义在线看 三沣玩客 拍拍 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 天下美图
中国文化英文 多播视频 装修知识库
2017-4-30 14:59:48
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --