




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1、创建型设计模式11.1工厂方法Factory Method【类】与抽象工厂Abstract Factory【对象、chapter 4】11.2单件Singleton【chapter5、对象】22、结构型设计模式22.1适配器Adapter【chapter7、类/对象】22.2组合Composite【chapter9、对象】22.3装饰者Decorator【chapter3、对象】22.4外观Facade【chapter7、对象】32.5代理Proxy【chapter11、对象】33、行为型设计模式33.1模板方法Template Method【chapter8、类】33.2命令Command【chapter6、对象】33.3迭代器Iterator【chapter9、对象】43.4观察者Observer【chapter2、对象】43.5状态State【chapter10、对象】43.6策略Strategy【chapter1、对象】44、与设计模式相处51、 创建型设计模式1.1工厂方法Factory Method【类】与抽象工厂Abstract Factory【对象、chapter 4】(1) 工厂方法Factory Method:定义:由子类决定要实例化的类是哪一个。让类把实例化推迟到子类。实例:拓展披萨工厂,有各地风味的加盟店。实现:分为Product(产品类 披萨)和Creator(创建者类 PizzaStore)两个类层级,都有许多具体的子类,每个子类都有自己特定的实现。相关:“依赖倒置原则Dependency Inversion Principle”【6】。要依赖抽象,不要依赖具体类。PizzaStore是高层组件、比萨实现是低层组件,前者依赖后者。(2) 抽象工厂Abstract Factory:定义:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。实例:原料(产品家族)工厂,每个子类都使用其区域的供货商来实现这些原料。相关:每个原料代表一个产品,由抽象工厂的工厂方法产生。1.2单件Singleton【chapter5、对象】定义:确保一个类只有一个实例,并提供一个全局访问点。独一无二的对象。实例:只有一个巧克力锅炉在用。相关:处理多线程的情况。2、 结构型设计模式2.1适配器Adapter【chapter7、类/对象】定义:将一个类的接口,转换成客户期望的另一个。【对象适配器】实例:交流电适配器、包装了鸭子适配器的火鸡(火鸡就是被适配者插座)实现:类适配器不是使用组合,而是继承被适配者和目标类,需要多重继承。相关:将枚举适配到迭代器2.2组合Composite【chapter9、对象】定义:允许将对象组合成树形结构来表现“整体/部分”层次结构,能让客户以一致的方式处理个别对象和对象组合。实例:添加甜点子菜单、菜单组件和菜单项、素食菜单相关:组合和迭代器凑在一起的魔力2.3装饰者Decorator【chapter3、对象】定义:动态地将责任附加到对象上,若要拓展功能,装饰者比继承更有弹性。实例:星巴克咖啡的饮料订单(含摩卡、奶泡等各种配料)实现:“开放-关闭原则”【5】,类应该对扩展开放、对修改关闭。相关:给爱用继承的人一个全新的设计眼界。2.4外观Facade【chapter7、对象】定义:提供一个统一的接口,简化子系统中的一群接口。实例:家庭影院 简化观赏电影相关:“最少知识Least Knowledge”原则【7】,只和密友谈话,减少对象之间的交互。2.5代理Proxy【chapter11、对象】定义:为另一个对象提供一个替身或占位符以控制对这个对象的访问。实例:糖果机的监视器、显示CD封面(加载中,请稍后)、对象村的配对相关:虚拟代理控制访问实例化开销大的对象,有许多变体:缓存代理、防火墙代理等。远程代理 Java RMI、虚拟代理、动态代理、写入时复制代理、同步代理等。3、 行为型设计模式3.1模板方法Template Method【chapter8、类】定义:在一个方法中定义一个算法的骨架,将部分步骤延迟到子类中。实例:星巴克咖啡和茶的冲泡方法融合、排序鸭子.、一个Swing的窗口程序实现:定义了一个算法的步骤,允许子类为各步提供实现。使用钩子,让子类选择要不要覆盖某步。相关:“好莱坞原则”【8】,别调用(打电话给)我们,我们会调用(打电话给)你。工厂方法是模板方法的一种特殊版本。代码复用的重要技巧!3.2命令Command【chapter6、对象】定义:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象。也支持可撤销undo() 的操作。实例:家电自动化遥控器、命令相当于对象村餐厅的订单实现:调用者Invoker(女招待、遥控器)相关:将发出请求的对象和执行请求的对象解耦;宏命令运行调用多个命令。3.3迭代器Iterator【chapter9、对象】定义:顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示。实例:对象村餐厅和煎饼屋合并之后,菜单实现实现:菜单项的存储方式不同,包括数组、Arraylist相关:“单一责任”【8】,一个类应该只有一个引起变化的原因。内聚cohesion。3.4观察者Observer【chapter2、对象】定义:定义了对象之间一对多依赖,当一个对象改变状态时,所有依赖者都会得到通知并自动更新。实例:气象监测站、布告板更新实现:主题对象、许多观察者Observable类相关:“松耦合原则”【4】,为了交互对象之间的松耦合设计而努力。3.5状态State【chapter10、对象】定义:允许对象在内部状态改变时改变它的行为,对象看起来像是修改了它的类。实例:糖果机的控制实现:每个状态都封装成一个类,并实现State接口。Context上下文会随着状态的改变将行为委托给当前状态对象。相关:应用在条件语句繁多的场景。3.6策略Strategy【chapter1、对象】定义:定义了算法族,分别封装起来,让它们之间可以相互替代。实例:鸭子飞、呱呱叫实现: 使用组合相关:“封装变化”【1】,Duck类内的fly()会随着鸭子的不同而改变。“针对接口编程”【2】,而不是针对实现编程。“多用组合”【3】,少用继承。4、 与设计模式相处不要为了使用而使用;保持简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 税法的考试题库及答案
- 华西护理考试题库及答案
- 《机械员》考试题库含答案(轻巧夺冠)
- 安全环保职业卫生消防考试试题及答案
- 2025年数据分析师招聘考试模拟题及答案集
- 2025年政府会计准则制度实操考试题库及解析
- 2025年【G1工业锅炉司炉】作业考试题库及G1工业锅炉司炉考试试题(含答案)
- 2025年教育系统事业单位招聘考试教材及模拟题集
- 2026届上海市北郊高级中学化学高二上期中达标测试试题含解析
- 2025年基础气象观测知识点详解及模拟题解析初级版
- 人教PEP版(2024)新四年级上册 教材解读
- 纪念中国人民抗日战争暨世界反法西斯战争胜利80周年
- 2025四川省高级人民法院招聘聘用制审判辅助人员30人考试备考题库及答案解析
- 加气块砌筑知识培训课件
- 智慧养老服务与管理课件
- 2025年湖南安全技术职业学院招聘考试笔试试题(含答案)
- 配电带电作业工考试试卷与答案
- 保密教育培训课件内容
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 2024-2025学年人教版数学五年级下学期期末试卷(含答案)
- 清欠工作管理制度管理办法
评论
0/150
提交评论