zoukankan      html  css  js  c++  java
  • 设计模式学习每日一记(4.抽象工厂)

    抽象工厂模式

    A.定义:

    提供一个创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类.

    B.定义分析:

    "提供创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类."类似简单工厂和工厂方法,要定义一个类,提供接口,但是是多个.

    "提供创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类."这个接口象简单工厂的接口一样,创建对象,但是有个约束:这些对象是相关的或者相互依赖的;

    "提供创建一系列相关或相互依赖的对象的接口而无需指定他们具体的类."这句话的意思可能是:因为抽象工厂派生类已经约束了种类,这里无须指定.

    C.问题

    (1)什么样的对象可以成为相关的或者相互依赖的?

    例如:windows界面中提供的Button类,Window类,List类等,这一系列是相关的;gtk界面中提供的Button类,Window类,List类,这一系列是相关的.

    (2)抽象工厂具体可以是什么形式的?

    抽象工厂类定义了创建对象的接口:

    class AbstractFactory

    {

        virtual AbstractButton createButton();

        virtual AbstractWindow createWindow();

        virtual AblstractList createList();

    };

    class WindowsFactory  : public AbstractFactory

    {

    AbstractButton createButton()

    {

    //创建windows系统上的Button组件

    }

    };

    class GtkFactory  : public AbstractFactory

    {

    AbstractButton createButton()

    {

    //创建gtk系统上的Button组件

    }

    };

    抽象工厂类提供了接口,具体子类来实现这些接口,这样的形式类似工厂方法定义接口子类实现的形式.

    (2)和工厂方法模式有什么不同?适用什么情况?

    工厂方法模式创建了一个对象,而抽象工厂提供了创建多个对象的接口.

    适用于创建一类产品这样的情况.

    作者:linucos

    出处:http://linucos.cnblogs.com

    声明因文章引起的任何问题,本博客不负任何责任;版权所有,欢迎转载 
  • 相关阅读:
    荔枝微课基础架构的演进与实践
    如何制作出让女朋友满意的大片
    SSL 证书变革之时已至,这些变化你都清楚吗?
    浅谈 FTP、FTPS 与 SFTP
    HTTP/3 来了,你了解它么?
    看视频常见的 720p、1080p、4k,这些分辨率到底包含了什么
    element-ui表单验证遇到v-if时不生效
    声纹识别算法阅读之CN-Celeb
    apply-cmvn&apply-cmvn-online&apply-cmvn-slide
    语音识别算法阅读之TDNN-F
  • 原文地址:https://www.cnblogs.com/linucos/p/2225011.html
Copyright © 2011-2022 走看看