设为首页 加入收藏

TOP

设计模式学习笔记--工厂方法模式
2015-11-21 00:59:55 来源: 作者: 【 】 浏览:1
Tags:设计模式 学习 笔记 工厂 方法 模式

?

学习过简单工厂模式,感觉很好用。在创建对象时,可以将复杂的初始化操作从客户端分离出来,简化客户端代码。大大的减少了代码修改的难度。而且可以通过参数不同,创建不同的对象。

?

但是简单工厂模式也有一些弊端,违背了开放--封闭原则。即如果我们增加了一个产品,对应的工厂也要进行修改,即switch---case中要新增加一些分支条件,不利于扩展。所以就有了下面的工厂方法模式:

?

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

?

?

// 设计模式Demo.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
  
   
#include 
   
     using namespace std; //被创建的对象基类动物类 class Animal { public: virtual void func() = 0; }; //子类 鸟 class Bird : public Animal { public: void func()override { cout<<"I am a bird. I can fly!"<
    
     Create()->func(); //创建一个鸟类工厂 god = new BirdFactory(); //生成鸟类对象,并执行操作 god->Create()->func(); getchar(); return 0; }
      
    
   
  

?

结果:

I am a human. I can walk!
I am a bird. I can fly!

?

使用工厂方法模式时,我们定义工厂方法时,只要定义一个接口或者抽象类,子类继承该接口或者抽象类,具体实现都由子类实现。而且不像简单工厂模式那样,需要在工厂中增加判断条件,在这里,添加子类的生产方法,只需要从接口或者抽象类再派生一个相关的子工厂类。遵循开放--封闭式原则。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++求最大子数组之和 下一篇poj 3691 DNA repair(AC自动机+d..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: