zoukankan      html  css  js  c++  java
  • Abstract Factory(抽象工厂)

         抽象工厂,最简单的设计模式,相信大家每天都在使用。

         通俗点介绍,先从工厂模式开始。工厂模式,很简单,工厂就生产东西的地方。这里当然是生产对象了。在遥远原始社会,我们需要一个对象,都是new出来的,相当与自己动手做的。

         比如 要一条鱼 Fish f1=new Fish();一条鱼就来了,现在有了工厂,鱼就来的容易了,Fish f1=Factory.getFish();看鱼来的容易多了,不用去new了,问Factory要(getFish())。简单吧,相信你以前也用过,只不过不知道叫工厂模式罢了。

        好了,接下来解释一下抽象工厂,顾名思义,这个工厂是抽象的,上面我们看到的Factory是一个对象(或者静态类),他是我们编写用来产生鱼的。

    public static class Factory

    {

    public static Fish getFish()

    {}

    }

    随便写下(有语法错误,别怪我哦),抽象工厂中,这个Factory是个抽象类,也不是具体的,Factory我们把他当作一个市场,可能是菜市场FactoryCai、花鸟市场FactoryNiao、也可能是钓鱼场FactoryDiao,反正是不确定的,现在我的需求还是一条鱼,不同的市场给出不同的鱼,按照原始社会做法,应该是

    Fish f1=FactoryCai.getFish();//我要一条黄鱼

    Fish f2=FactoryNiao.getFish();//我要一条金鱼(鲸鱼,买不起)

    Fish f3=FactoryDiao.getFish();//我要一条我钓得起来的鱼

    既然FactoryCai,FactoryNiao,FactoryDiao都是继承于Factory,那为什么不写Fish f1=Factory.getFish(x);//到底是返回什么鱼,由传入的参数x来决定,

    这就是抽像工厂,简单吧,呵呵。

    为什么要写成抽象工厂的模式,我想说明一下:

    1.可以少改代码,我一向认为只要改了代码就需要花大量的成本(时间、金钱)进行测试...

    2.能隔离要生成的具体对象,也就是松耦合。这样做的好处是,可以自由改动、增加这些具体的类(FactoryCai)。

    完整代码不想写了,抽象工厂模式实在太简单了,实在有问题发我email拉。

  • 相关阅读:
    Battle ships(二分图,建图,好题)
    棋盘游戏(二分图,删边)
    Girls' research(manacher)
    jenkins配置发送测试结果邮件
    Win10电脑如何更改开机启动项
    Ubuntu 18.04 固定pycharm图标固定到启动栏
    ubuntu下Fiddler抓包
    一个数据去重sql
    JENKINS针对不同项目组对用户进行权限分配
    jenkins添加用户
  • 原文地址:https://www.cnblogs.com/hainange/p/6153393.html
Copyright © 2011-2022 走看看