b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

解释器模式举例_lua解释器交互模式_动态编译与解释器模式(6)

电脑杂谈  发布时间:2017-02-22 17:29:35  来源:网络整理

控制台会输出:

12345671234567

这就是工厂方法模式,其中遍历器也算是一种迭代器设计模式,后面会介绍。我不会跟你讲什么造车,造轮船,造人,我会给出实际应用。这里只是其中一种应用的举例,当一个接口的一系列实现需要另外的对象对其进行相同操作时,我们就可以这样用:在这个接口中定义返回另外一个对象的方法(工厂方法),然后再在这个接口的实现中,返回对其操作的对象。

上面这个例子会在迭代器模式中给出完整的实现代码。

一抽象产品类派生出多个具体产品类;一抽象工厂类派生出多个具体工厂类;每个具体工厂类只能创建一个具体产品类的实例。 即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)。“”的关系。

与简单工厂间的取舍:工厂方法模式和简单工厂模式在定义上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而不像简单工厂模式, 把核心放在一个实类上。工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来, 从而可以在实际上成为多个简单工厂模式的综合,从而推广了简单工厂模式。 反过来讲,简单工厂模式是由工厂方法模式退化而来。设想如果我们非常确定一个系统只需要一个实的工厂类, 那么就不妨把抽象工厂类合并到实的工厂类中去。而这样一来,我们就退化到简单工厂模式了。

可以看出工厂方法的加入,使得对象的数量成倍增长。当产品种类非常多时,会出现大量的与之对应的工厂对象,这不是我们所希望的。

如果再分得详细一点,一个工厂可能不只是生产手机(如小米除了手机,连电饭锅都有),但有得工厂智能生成低端的产品,而大一点的工厂可能通常是生成更高端的产品。所以一个工厂是不够用了,这时,就应该使用抽象工厂来解决这个问题。

3、抽象工厂方法模式(Abstract Factory Pattern)

别名:配套(Another Name:Kit)

Provide an intece for creating families of related or dependent objects without specifying their concrete classess.

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

何时使用:

优点:

上述生成魅族产品的例子中,我们只生产了手机,但是它不止有手机一种产品,可能还有其他的,比如耳机,为了还可以生成耳机,我们需要对上例进行扩展。

我们先给出上面生成手机的例子的扩展后的抽象工厂模式代码,以比较这几种模式:

//抽象工厂模式public class AbstractFactory {    public static void main(String args[]){        IFactory bigfactory = new BigFactory();        IFactory smallfactory = new BigFactory();        bigfactory.producePhone().run();        bigfactory.produceHeadset().play();        smallfactory.producePhone().run();        smallfactory.produceHeadset().play();    }}//抽象产品*2intece Headset{    void play();}//抽象产品intece MeizuPhone{    void run();}//具体产品*2*2class PRO5 implements MeizuPhone{    @Override    public void run() {        System.out.println("我是一台PRO5");    }}class MX5 implements MeizuPhone{    @Override    public void run() {        System.out.println("我是一台MX5");    }}class EP21 implements Headset{    @Override    public void play() {        System.out.println("我是一副EP21");    }}class EP30 implements Headset{    @Override    public void play() {        System.out.println("我是一台EP30");    }}//抽象工厂intece IFactory{    MeizuPhone producePhone();    Headset produceHeadset();}//具体工厂*2class BigFactory implements IFactory{    @Override    public MeizuPhone producePhone() {        return new PRO5();    }    @Override    public Headset produceHeadset() {        return new EP30();    }}//具体工厂*2class SmallFactory implements IFactory{    @Override    public MeizuPhone producePhone() {        return new MX5();    }    @Override    public Headset produceHeadset() {        return new EP21();    }}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33893-6.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 八爪鱼人
      八爪鱼人

      现在世界新格局已经形成了

    • 田雪洋
      田雪洋

      美国威胁恐吓伊拉克没用的

    • 石洋
      石洋

      换言之你10万存银行一年就是购买力变成99900

    热点图片
    拼命载入中...