您当前的位置: 首页 >  c++

小林coding

暂无认证

  • 2浏览

    0关注

    167博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++ 深入浅出工厂模式(初识篇)

小林coding 发布时间:2019-09-15 21:21:07 ,浏览量:2

初识工厂模式

我们先看工厂模式的介绍

这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

简单来说,使用了C++多态的特性,将存在继承关系的类,通过一个工厂类创建对应的子类(派生类)对象。在项目复杂的情况下,可以便于子类对象的创建。

工厂模式的实现方式可分别简单工厂模式、工厂方法模式、抽象工厂模式,每个实现方式都存在优和劣。

最近炒鞋炒的非常的火,那么以鞋厂的形式,一一分析针对每个实现方式进行分析。

简单工厂模式 具体的情形:
  • 鞋厂可以指定生产耐克、阿迪达斯和李宁牌子的鞋子。哪个鞋炒的火爆,老板就生产哪个,看形势生产。
UML图:

简单工厂模式

简单工厂模式的结构组成:
  1. 工厂类(ShoesFactory):工厂模式的核心类,会定义一个用于创建指定的具体实例对象的接口。
  2. 抽象产品类(Shoes):是具体产品类的继承的父类或实现的接口。
  3. 具体产品类(NiKeShoes\AdidasShoes\LiNingShoes):工厂类所创建的对象就是此具体产品实例。
简单工厂模式的特点:
  • 工厂类封装了创建具体产品对象的函数。
简单工厂模式的缺陷:
  • 扩展性非常差,新增产品的时候,需要去修改工厂类。
简单工厂模式的代码:
  • Shoes为鞋子的抽象类(基类),接口函数为Show(),用于显示鞋子广告。
  • NiKeShoesAdidasShoesLiNingShoes为具体鞋子的类,分别是耐克、阿迪达斯和李宁鞋牌的鞋,它们都继承于Shoes抽象类。
// 鞋子抽象类
class Shoes
{
public:
    virtual ~Shoes() {}
    virtual void Show() = 0;
};

// 耐克鞋子
class NiKeShoes : public Shoes
{
public:
    void Show()
    {
        std::cout             
关注
打赏
1659932071
查看更多评论
0.0764s