设计模式-工厂三姐妹
来源:互联网 发布:智慧树网络选修课程 编辑:程序博客网 时间:2024/04/29 22:59
定义:由一个工厂类根据传入的参数,动态决定应该创建出哪一种产品类的实例,被创建的实例通常都有共同的父类
类图:代码无措就是优(小菜面试——计算器)
工厂角色(核心)、抽象产品角色、具体产品角色、
优点:明确各自职责权利,利于整个软件体系结构优化
缺点:违反了高内聚、开闭原则何时用:创建的对象较少、客户只知道传入工厂类的参数,对于如何创建不关心。例如:一个水果农场,当用户需要某一种水果时,该农场能够根据用户所提供的的水果名称返回该水果。在此,水果农场被称为工厂而生产出的水果称为产品。水果的名称则被称为参数,工厂可以根据参数的不同返回不同的产品,这是简单工厂模式的动机。
用户无需知道苹果等如何创建,只需要知道水果的名称即可得到对应的水果。
名字:工厂方法模式(创建型)
定义:定义一个用来创建对象的接口,让子类决定实例化哪一个雷。工厂方法使一个类的实例化延迟到其子类。
类图:雷锋依然在人间 抽象产品、具体产品、抽象工厂、具体工厂
优点:1、用户只需关心产品对于工厂,无须知道具体产品类的类名。
2、所有具体工厂类具有同一抽象父类。
3、完全符合开闭原则。
缺点:增加系统复杂度、抽象性和理解难度。
何时用:客户端不知道它所需要的对象的类、抽象工厂类通过其子类来制定创建哪个对象。
名字:抽象工厂模式
定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。
类图:就不能不换DB吗? 抽象工厂、具体工厂、抽象产品、具体产品
优点:1、隔离了具体类的生成,使得客户端并不需要知道什么被创建。
2、当一个产品族中的多个点对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族的对象。
缺点:1、添加新的产品等级结构麻烦,违背开闭原则
何时用:1、一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节。
2、系统中有多于一个的产品族,但每次只使用其中某一产品族
3、属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来
4、产品等级结构稳定,在设计完成后,不会向系统中增加新的产品等级结构或者删除已有的产品等级结构。
区别:
1、简单工厂模式和工厂方法模式:
简单工厂模式设计的按钮工厂
工厂方法模式设计的按钮工厂
如果生产颜色相同的矩形、菱形、椭圆形、三角形按钮,而所生产的产品又位于不同的产品等级结构中,例如说有两个,如果使用工厂方法模式,就需要2*4个,如果使用抽象工厂模式,只需要两个。
- 设计模式------工厂三姐妹
- 设计模式------工厂三姐妹
- 设计模式-工厂三姐妹
- 设计模式--工厂三姐妹
- 设计模式工厂三姐妹
- 【设计模式】工厂三姐妹
- 设计模式-工厂三姐妹
- 设计模式-工厂三姐妹
- 【设计模式】-工厂三姐妹
- 【设计模式】工厂三姐妹
- 设计模式--工厂三姐妹
- 设计模式之 工厂模式三姐妹
- 设计模式——工厂三姐妹
- 设计模式之工厂三姐妹
- 设计模式总结—工厂三姐妹
- 设计模式之工厂三姐妹
- 设计模式之工厂三姐妹
- 【设计模式】——工厂三姐妹
- 学习笔记2
- POJ 3669 -- BFS
- java四则混合运算工具类备忘
- Java虚拟机与GC
- appium+java+cucumber+selenium-webdriver android
- 设计模式-工厂三姐妹
- linq语句:分组统计 broup by +sum
- android TextView实现跑马灯效果
- maven之jetty-maven-plugin插件
- asm基础——masm中的预定义符号
- 介绍几个程序中关于"路径字符串"的函数
- Mysql
- 给pdf文件添加防伪水印logo(附工程源码下载)
- 蓝桥杯 - Anagrams问题