(转)抽象工厂_笔记

抽象工厂:

定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。

类型:创建类模式

类图:

调用类Client

      工厂接口IFactory 产品接口IProduct

+createProduct() +productMethod()

工厂实现 Factory 产品实现Product

抽象工厂模式与工厂方法模式的区别

抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式

的区别在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对多个产品等级结构。在编程中,

通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有都是衍生自同一个接口或

抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。

在抽象工厂模式中,有一个产品族的概念:所谓产品族,是指位于不同产品等级结构中功能相关的产品组成的家族。

抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品成为一个等级结构。

明白了等级结构和产品族的概念,就理解工厂方法模式和抽象工厂模式的区别了,如果工厂的产品不属于同一个

等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式。

总结:

简单工厂:

1.抽象产品

2.具体产品

3.简单工厂

工厂模式:

1.抽象产品

2.具体产品

3.抽象工厂

4.具体工厂

抽象工厂模式:(1.系统中有多个产品族,而系统一次只可能消费其中一族产品2.同属于同一个产品族的产品以其使用。)有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族

1.抽象产品

2.具体产品

3.抽象工厂

4.具体工厂

参考:http://blog.csdn.net/zhengzhb/article/details/7359385

http://www.cnblogs.com/zhangchenliang/p/3700820.html

工厂模式和策略模式区别:

工厂模式和策略模式的区别在于实例化一个对象的位置不同,对工厂模式而言,实例化对象是放在服务端的,即放在了工厂类里面;

而策略模式实例化对象的操作在客户端,服务端的“销售部门”只负责传递该对象,并在服务端的环境里执行特定的操作。。。

工厂模式要求服务端的销售部门足够灵敏,而策略模式由于对策略进行了封装,所以他的销售部门比较傻,需要客户提供足够能区分使用哪种策略的参数,而这最好的就是该策略的实例了。

时间: 2024-10-13 03:02:25

(转)抽象工厂_笔记的相关文章

抽象工厂模式笔记

定义 之前已经写过工厂方法模式,其可以将创建对象的代码集中在一个对象或方法中,当增加产品时,只需要增加对应的产品和工厂类即可.但是其有一个问题是工厂的接口里只有一个创建抽象产品的方法,当我们想要在一个工厂里创建一系列的产品时,就需要使用抽象工厂模式. 使用 图看起来可能有点容易乱,其实主要有三个接口,两个产品的接口,每个产品接口有多个实现类 同时有一个工厂类,工厂类中可以生成每种产品接口的一个实现类. 代码(Java) 产品组部分的代码如下: // A产品接口 public interface

(转)抽象工厂学习笔记

1.1.1          摘要 抽象工厂模式:允许客户使用抽象的接口来创建一系列相关的产品,而无需要知道实际产出的具体产品是什么.这样一来,客户就从具体的产品中被解耦出来.这种模式适用于产品对象的数目和种类不变,而具体产品系列之间存在不同或者容易变化的情况. 关键字:依赖抽象,不要依赖具体类,OCP 使用率:   high 图1.1.1抽象工厂物理架构 1.1.2          参与类或接口作用 AbstractFactory (UIAbstractFactory):定义一个接口用来创建

面试题_抽象工厂,字符反串,冒泡与选择排序

1:写一个抽象工厂模式 java实例 ?2,:String str="ABCDF" 把这个字符串怎么排序成"FDCBA"? 3:写一个冒泡排序把这个数组排一下"1,9,3,4,7,2,8,5,"? 1) public interface Work{ void doWork(); } CreateProduct: public class Studentwork implements Work{ public void doWork() {    

大话设计模式_抽象工厂模式(Java代码)

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类. 简单描述:有多种抽象产品,并且每种抽象产品都有多个具体产品.一个抽象工厂,提供多个具体工厂,每个工厂则提供不同种类的具体产品. 大话设计模式中的截图: 例子代码: AbstractProductA类: 1 package com.longsheng.abstractfactory; 2 3 public abstract class AbstractProductA { 4 5 public abstract v

易学设计模式看书笔记(4) - 抽象工厂模式

 本文内容来自书上,不懂设计模式,只求混个眼熟. 三.抽象工厂模式 1.动物管理系统的例子 public interface Animal{ public void eat(); } public class Tiger implements Animal { public void eat(){ sysout.out.println("老虎会吃"); }; public void run(){ sysout.out.println("老虎会跑"); }; } pu

java/android 设计模式学习笔记(4)---抽象工厂模式

再来介绍一下抽象工厂模式(Abstact Factory Pattern),也是创建型模式之一,上篇博客主要介绍了工厂方法模式.抽象工厂模式和工厂方法模式稍有区别.工厂方法模式中工厂类生产出来的产品都是具体的,也就是说每个工厂都会生产某一种具体的产品,但是如果工厂类中所生产出来的产品是多种多样的,工厂方法模式也就不再适用了,就要使用抽象工厂模式了. 抽象工厂模式的起源或者最早的应用,是对不同操作系统的图形化解决方案,比如在不同操作系统中的按钮和文字框的不同处理,展示效果也不一样,对于每一个操作系

《Head First 设计模式》学习笔记——工厂模式 + 抽象工厂模式

设计模式 工厂模式:定义一个创建对象的接口,但由子类决定要实例化的是哪一个.工厂方法让类把实例化推迟到子类. 所谓的"决定",并非指模式同意子类本身在执行时做决定,而是指在编写创建者类时.不须要知道实际创建的产品是哪一个. 选择了使用这个子类,就自然的决定了实际创建的产品是什么. 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族.而不须要指定详细类. 抽象工厂的任务时定义一个负责创建一组产品的接口.这个接口内的每一个产品都负责创建一个详细产品.使用工厂方法. 设计原则 (1)多

《大话设计模式》学习笔记11:抽象工厂模式

切换数据库类型示例: 1.User类: public class User { public int Id { get; set; } public string Name { get; set; } } 2.AbstractProduct(以User为例): public interface IUser { void Insert(User user); User GetUser(int id); } 3.Product(以User.SQL Server为例): public class Sq

设计模式那点事读书笔记(2)----抽象工厂模式

抽象工厂模式: 此模式提供了一个接口,用于创建相关或者依赖对象的家族,而不需要指定具体实现类. 解决什么问题: 抽象工厂模式允许客户在使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品.从而实现客户从具体的产品中解耦. UML: 代码结构: 代码: 定义抽象产品: package com.demo.factory.model; /** * 抽象产品 */ public abstract class AbstractBa