设计模式二 工厂模式

Posted idea-persistence

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式二 工厂模式相关的知识,希望对你有一定的参考价值。

0、基本定义

工厂模式定义:一个用于创建对象的接口,让子类决定实例化哪一个类。实例化延迟到其子类。‘

抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定他们的具体类

只对结果负责。

解耦合

1、类型

1.1 、简单工厂模式:

public class SimpleFactory {


    public Milk getMilk(String name) {

        if ("特仑苏".equals(name)) {
            return new Telunsu();
        } else if ("伊犁".equals(name)) {
            return new Yili();
        } else if ("蒙牛".equals(name)) {
            return new Mengniu();
        }
        return null;
    }
}

 

1.2、工厂模式

public interface Factory {

    //统一产品出口

    Milk getMilk();
}


public class MengniuFactotry implements Factory {
    @Override
    public Milk getMilk() {
        return new Mengniu();
    }
}


public class TelunsuFactotry implements Factory {
    @Override
    public Milk getMilk() {
        return new Telunsu();
    }
}


public class YiliFactotry implements Factory {
    @Override
    public Milk getMilk() {
        return new Yili();
    }
}

 

Test

public class FactoryTest {

    public static void main(String[] args) {

        Factory factory = new MengniuFactotry();
        System.out.println(factory.getMilk().getName());
    }

 

 1.3 抽象工厂模式:

产品登记,产品族

public abstract class AbstractFactory {

    public  abstract Milk getMengniu();
    public  abstract Milk getYili();
    public  abstract Milk getTelunsu();

}


public class MilkFactory extends AbstractFactory {
    @Override
    public Milk getMengniu() {
        return new Mengniu();
    }

    @Override
    public Milk getYili() {
        return new Yili();
    }

    @Override
    public Milk getTelunsu() {
        return new Telunsu();
    }
}

 

3、优点

优点:

》良好的封装性,代码结构清晰

》扩展性好

 

使用场景

》new一个对象的替代品

 

参考资料:

《大话设计模式》

 

以上是关于设计模式二 工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

PHP面向对象之选择工厂和更新工厂

设计模式学习——简单工厂模式工厂模式抽象工厂模式

设计模式工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

C#设计模式之二工厂方法模式(Factory Method Pattern)创建型

案例分析:设计模式与代码的结构特性

设计模式之工厂模式