设计模式之工厂模式

本文介绍了工厂模式的应用场景,强调了其在提高代码内聚性和降低耦合度方面的作用,并通过具体的代码示例展示了如何实现该模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式之工厂模式

一.使用的情况

      为了提高内聚和松耦合,我们要经常的抽象出一些公共的借口以形成抽象基类或者接口.我们可以通过声明一个指向基类的指针来指向实际的子类来实现,达到了多态的目的.

 二.重要的功能

   1>定义创建对象的接口,封装了对象的创建.   

   2>使得具体化类的工作延迟到了子类中. 

三.模块分析   

  1>一个n多的子类集成自抽象类,我们就得用new XXX,客户程序员必须直到实际子类的名称,如果系统很复杂,那么就会又冲突的名字  

      命名;程序的扩展性和维护型就变得很差;  

  2>我们不知道父类中具体要实例化哪一个子类.例如:在A类中要使用B类,B类是一个抽象父类,在A中并不知道具体要实例化哪一个B的

      子类,但是在A的子类D中可以知道.

 

四.实现代码

   1>Product.h
   class Product{
     public:
                virtual ~Product()=0;
     protected:
                Product();
  };
  class ConcreteProduct:public Product{
      public:
              ~ConcreteProduct();
               ConcreteProduct();    
  };

  2>Product.cpp
   #include <iostream>
   usingnamespace std;
  
   Product::Product()
   {
   }
   Product::~Product()
   {
   }
   ConcreteProduct::ConcreteProduct()
   {
      cout<<"ConcreteProduct..."<<endl;
   }
   ConcreteProduct::~ConcreteProduct()
   {
   }

  3>Factory.h
   class Product;

   class Factory
   {
    public:
        virtual ~Factory()=0;
        virtual Product* CreateProduct()=0;
    protected:
         Factory();
   } 
   class ConcreteFactory:public Factory
   {  
     public:
         ~ConcreteFactory(); 
         ConcreteFactory(); 
         Product* CreateProduct(); 
  }
  4>Factory.cpp
  #include "Factory.h" 
  #include "Product.h"
  #include <iostream>
  using namespace std;
  Factory::Fatcory()
  {
  }
    
  Factory::~Fatcory()
  {
  }
    
  ConcreteFactoy::ConcreteFactoy()
  {
     cout<<"ConcreteFactory..."<<endl;
  }
    
   ConcreteFactoy::~ConcreteFactoy()
  {
       
  }

   Product* ConcreteFactory::CreateProduct()
   {
      return new ConcreteProduct();
   }

   5>main.cpp

   #include "Factroy"
   #include "Product"
   #include <iostream>
   using namespace std;
   int main(int argc,char* argv[])
   {

      Factory* fac=new ConcreteFatcory(); 

      Product* p=fac->CreateProduct();

      return 0;
   }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值