首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
面向对象设计模式纵横谈:Abstract Factory 抽象工厂模式(笔记记录)
】的更多相关文章
Java设计模式:Abstract Factory(抽象工厂)模式
概念定义 抽象工厂(Abstract Factory)模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂模式中,系统的产品有多于一个的产品族(一个产品族里定义多个产品),而系统只消费其中某一族的产品.换句话说,抽象工厂创建一整套具有相互依赖或作用关系的产品(至少两个产品),而工厂方法中的工厂只能创建单一系列的产品. 应用场景 客户端不需要知道它所创建的对象的类. 需要一组对象共同完成某种功能时,并且可能存在多组对象完成不同功能的情况. 系统结构稳定,不会频繁地增加…
面向对象设计模式纵横谈:Abstract Factory 抽象工厂模式(笔记记录)
今天是设计模式的第二讲,抽象工厂的设计模式,我们还是延续老办法,一步一步的.演变的来讲,先来看看一个对象创建的问题. 1.如何创建一个对象 常规的对象创建方法: 这样的创建对象没有任何问题,也可以很好的使用.但是如果有需求的变化,比如,如果我们换了一种道路呢,这时候就出现了问题. new的问题: -实现依赖,不能应对"具体实例化类型"的变化,Road是具体类型,所有使用到Road的地方都需要变化.如果经常变化,怎么解决具体类型的变化呢? 解决思路: -封装变化点--哪里变化,…
设计模式(一): abstract factory抽象工厂模式 -- 创建型模式
1.定义 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. 2.适用场景 1.一个系统要独立于它的产品创建.组合和表示. 2.一个系统要由多个产品系列中的一个来配置. 3.当你要强调一系列相关的产品对象的设计以便进行联合使用. 4.当你提供一个产品类库,而只想显示它们的接口而不是实现. 3.评价 1.它分离了具体的类 2.它使得易于交换产品系列 3.它有利于产品的一致性 4.难以支持新种类的产品 5."开放-封闭"原则要求系统对扩展开放,对修改封闭.通过扩展达到增…
一天一个设计模式——Abstract Factory抽象工厂模式
一.模式说明 前面学习了工厂方法(Factory Method)模式.在工厂方法模式中,在工厂方法模式中,父类决定如何生成实例,但并不决定所要生成的具体类,具体的处理交由子类来处理.这里学习的抽象工厂方法模式中,抽象工厂使用抽象的零件组装成抽象的产品.即使用包含特定的方法接口零件,将零件组装成抽象产品. 二.模式类图: 上面的类图中包含两个包:包含抽象工厂,抽象零件,抽象产品的类所在的包以及具体工厂实现类的包. 三.代码示例 1.Item类: package com.designpattern.…
c++ 设计模式9 (Abstract Factory 抽象工厂模式)
5.2 抽象工厂模式 动机:在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作:同时,由于需求的变化,往往存在更多系列对象的创建工作. 代码示例: 实现利用数据库的业务逻辑,支持多数据库(Sql,Oracle等),有连接.命令.读取等功能. 其中命令,连接功能之间有相互联系. 方法一(使用工厂方法): 每个功能类有一个创建的工厂,如IDBConnection与IDBConnectionFactory //数据库访问有关的基类 class IDBConnection{ }; class I…
Abstract Factory抽象工厂模式
抽象工厂模式是是用一个超级工厂去创建其他工厂,简单点说就是工厂的父类,属于创建型模式. 目标:提供一个创建一组对象的方法,而无需指定它们具体的类(同工厂方法). 使用场景:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品. 实现:在一个工厂里聚合多个同类产品. 案例 上一个工厂方法模式的案例是 一家生产电子产品的工厂,可以生产各种电子产品,但是这时候集团还拥有一家生产服装的工厂, 怎么能把这两个工厂给管理起来,其实把公产管理起来这样更加有助于去理解业务中的类的组织管理,不至于混乱不清晰…
Abstract Factory 抽象工厂模式
提供一个创建一些列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂顾名思义就是对工厂的抽象,它提供了一组创建抽象产品对象的操作接口,我们实际使用的是抽象工厂的派生类,派生类中提供了操作的具体实现,创建一组具体的对象. 以下情况可以使用抽象工厂模式: 一个系统要独立于它的产品的创建.组合和表示时. 一个系统要由多个产品系列中的一个来配置时. 当你要强调一系列相关的产品对象的设计以便进行联合使用时. 当你提供一个产品类库,而只想显示它们的接口而不是实现时. 抽象工厂模式的优缺点: 他分离…
面向对象设计模式纵横谈:Factory Method 工厂方法模式(笔记记录)
从耦合关系谈起 耦合关系直接决定着软件面对变化时的行为 -模块与模块之间的紧耦合使得软件面对变化时,相关模块都要随之更改 -模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变 抽象部分变化慢,细节(具体)部分变化快:高层部分变化慢,底层部分变化快. 当我们对于系统的认识无法梳理出上面的图时,最好不要一开始就用设计模式,设计模式其实是一个演绎的过程.当我们对软件认识不断深化时,慢慢就会知道哪些是主要的,哪些是次要的,就能梳理出一个抽象和具体的层次,再考虑用哪…
C#面向对象设计模式纵横谈——5.Factory Method 工厂方法模式(创建型模式)
动机 (Motivation) 在软件系统中,经常面临着“某个对象”的创建工作; 由于需求的变化,这个对象经常面临着剧烈的变化,但是它却拥有比较稳定的接口. 如何应对这种变化?如何提供一种“封装机制”来隔离出“这个易变对象”的变化,从而保持系统中“其他依赖该对象的对象”不随着需求改变而改变 ? 意图 (Intent) 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method 使得一个类的实例化延迟到子类. ———<设计模式> GOF 结构(Structure)…
2.设计模式-Abstract Factory 抽象工厂模式
大神勿喷,不对的地方请指出来,学笔记而已. 解决的问题:应对多系列对象构建的变化或多系列(例如:崎岖的山路和平坦的马路属于一个系列) 不断的变化的创建. 使用场景:对象不变(比如有3个对象 "路, 房子, 湖" 这些不能有增加或者减少),系列经常变,并且比较多(”路“对象 包含崎岖的山路和平坦的马路等) 针对上图用代码表示: public abstract class AbstractProductA { } public abstract class AbstractProductB…