版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四讲,建造者模式(Buider,场景翻译机,MM最爱听的就是我爱你这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出我爱你这句话了,国外的MM也可以轻松搞掂,这就是我的我爱你builder。(这一定比美军在伊拉克用的翻译机好卖,Builder模式概述,Builder模式是一种创建型模式,它主要是应对项目中一些复杂对象的创建工作。 所谓“复杂对象”是指:此对象中还含有其它的子对象。 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示,Builder模式概述,
2、建造者模式将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。 使用该模式可以逐步地构造对象,使得对象的创建更具弹性。生成器模式的关键是将一个包含有多个组件对象的创建分成若干个步骤,并将这些步骤封装在一个称作生成器的接口中,相关的模式,抽象工厂(Abstract Factory)模式 共性:创建型模式、创建类对象 区别: Abstract Factory模式:解决“系列对象”的需求变化 Builder模式:解决“对象部分”的需求变化,通常和组合模式结合使用,Builder模式的角色,产品(Product) 抽象生成器(Builder) 具体生成器(Co
3、ncreteBuilder) 指挥者(Director,Builder模式结构,建造者(Builder)角色 具体建造者(Concrete Builder)角色 产品(Product)角色 指导者(Director)角色,Builder模式示例,1产品(Product): PanelProduct.java import javax.swing.*; public class PanelProduct extends JPanel JButton button; JLabel label; JTextField textField;,Builder模式示例,2抽象生成器(Builder): B
4、uiler.java import.javax.swing.*; public interface Builder public abstract void buildButton(); public abstract void buildLabel(); public abstract void buildTextField(); public abstract JPanel getPanel();,Builder模式示例,3具体生成器(ConcreteBuilder)_1:ConcreteBuilderOne.java import javax.swing.*; public class
5、ConcreteBuilderOne implements Builder private PanelProduct panel; ConcreteBuilderOne() panel=new PanelProduct(); public void buildButton() panel.button=new JButton(按钮); public void buildLabel() panel.label=new JLabel(标签); public void buildTextField() panel.textField=new JTextField(文本框); public JPane
6、l getPanel() panel.add(panel.button); panel.add(panel.label); panel.add(panel.textField); return panel;,Builder模式示例,3具体生成器(ConcreteBuilder)_2:ConcreteBuilderTwo.java import javax.swing.*; public class ConcreteBuilderTwo implements Builder private PanelProduct panel; ConcreteBuilderTwo() panel=new Pa
7、nelProduct(); public void buildButton() panel.button=new JButton(button); public void buildLabel() panel.label=new JLabel(label); public void buildTextField() panel.textField=new JTextField(textField); public JPanel getPanel() panel.add(panel.textField); panel.add(panel.label); panel.add(panel.butto
8、n); return panel;,Builder模式示例,4指挥者(Director):Director.java import javax.swing.*; public class Director private Builder builder; Director(Builder builder) this.builder=builder; public JPanel constructProduct() builder.buildButton(); builder.buildLabel(); builder.buildTextField(); JPanel product=build
9、er.getPanel(); return product;,Builder模式示例,5应用 Application.java import javax.swing.*; public class Application public static void main(String args) Builder builder=new ConcreteBuilderOne(); Director director=new Director(builder); JPanel panel=director.constructProduct(); JFrame frameOne=new JFrame(
10、); frameOne.add(panel); frameOne.setBounds(12,12,200,120); frameOne.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frameOne.setVisible(true); builder=new ConcreteBuilderTwo(); director=new Director(builder); panel=director.constructProduct(); JFrame frameTwo=new JFrame(); frameTwo.add(panel); fr
11、ameTwo.setBounds(212,12,200,120); frameTwo.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frameTwo.setVisible(true);,优缺点,建造者模式的使用使得产品的内部表象可以独立的变化。使用建造者模式可以使客户端不必知道产品内部组成的细节。 每一个Builder都相对独立,而与其它的Builder无关。 可使对构造过程更加精细控制。 将构建代码和表示代码分开。 当增加新的具体生成器时,不必修改指挥者的代码,即该模式满足开-闭原则。 建造者模式的缺点在于难于应付“分步骤构建算法”的需求变动,适用性,复杂的内部结构 相互依赖的各部分创建过程独立 各部分变化剧烈,组合算法相对稳定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中生设计土壤重金属浸出实验研究方法课题报告教学研究课题报告
- 2026年美发造型行业温和配方市场分析报告
- 四川省攀枝花市属高中2026届高三3月摸底考试化学试题理试题含解析
- 肺挫伤中血管外肺水的精准监测与优化液体管理策略探究
- 肺动脉灌注低温肺保护液:体外循环后肺保护的机制与效果探究
- 育秧方式与化学调控:解锁晚稻秧龄弹性的密码
- 肱骨近端骨折内侧入路的解剖学解析与临床应用探究
- 股权分置改革:解锁上市公司资本收益增长密码
- 2026届江西科技学院附属中学高三全真化学试题模拟试卷(11)含解析
- 儿童过敏原皮肤点刺试验护理实践专家共识总结2026
- 教育局中小学考试命题管理方案
- 光大金瓯资产管理有限公司笔试
- 2025年中国邮政集团有限公司湖北省分公司招聘笔试备考试题及完整答案详解1套
- 2025年建筑施工特种作业人员考试建筑电焊工题库(附答案)
- 构建人类命运共同体+课件-2025-2026学年高中政治统编版选择性必修一
- 2025年善意的谎言辩论会材料及流程
- 2025年辽宁卷历史高考试卷(原卷+答案)
- 检验科个人防护培训课件
- 小儿骨科课件
- 2025年不动产登记业务知识试题及答案
- 2025年内部审计人员考试题库
评论
0/150
提交评论