设计模式-工厂方法模式

工厂方法模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖达到解耦、复用和方便后期维护拓展的目的。当前模式与简单工厂模式的不同是,当前模式使类的实例化延迟到其子类,并且相比简单工厂模式本模式更加符合开放-封闭原则。

 

工厂方法模式定义一个创建产品对象的接口,将实际创建工作推迟到子类中。相比于简单工厂核心工厂不再负责产品的创建,更好的体现依赖接口而不是依赖细节编程的理念,如此的抽象化保证工厂方法模式在引进新产品时可以不修改具体的工厂角色,只需要添加新的实现类。

主要分为四个角色:抽象工厂,工厂方法接口;具体工厂,实现抽象工厂接口的具体工厂类,完成具体工厂的创建。抽象产品,产品对象接口;具体产品,实现抽象产品角色所定义的接口。


#include "stdafx.h"
#include <string>
#include <iostream>

using namespace std;

//方法类接口
class Operation
{
public:
	explicit Operation(){}
	virtual ~Operation(){}

	virtual float GetResult(){ return 0;}

	void FNumA(float tmpA){m_NumA = tmpA;}
	void FNumB(float tmpB){m_NumB = tmpB;}

protected:
	float m_NumA;
	float m_NumB;
};

//具体类加法类
class OperationAdd : public Operation
{
public:
	explicit OperationAdd(){}
	virtual ~OperationAdd(){}

	float GetResult()
	{
		return m_NumA + m_NumB;
	}
};
//具体类,减法类
class OperationSub : public Operation
{
public:
	explicit OperationSub(){}
	virtual ~OperationSub(){}

	float GetResult()
	{
		return m_NumA - m_NumB;
	}
};

//工厂类接口
class IFactory
{
public:
	explicit IFactory(){}
	virtual ~IFactory(){}

	virtual Operation * CreatOperation() = 0;
};

//加法工厂
class AddFactory : public IFactory
{
public:
	explicit AddFactory(){}
	virtual ~AddFactory(){}

	virtual Operation * CreatOperation()
	{
		return new OperationAdd;
	}
};

//减法工厂
class SubFactory : public IFactory
{
public:
	explicit SubFactory(){}
	virtual ~SubFactory(){}

	virtual Operation * CreatOperation()
	{
		return new OperationSub;
	}
};

void main()
{
    IFactory *opF = new AddFactory;

	Operation * OP = opF->CreatOperation();//创建加法工厂

	OP->FNumA(8);
	OP->FNumB(9);

	float yu = OP->GetResult();
}
关于应用,来自百度百科

工厂方法经常用在以下两种情况中:

第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。

第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。

关于简单工厂的解释见:http://blog.youkuaiyun.com/sdausxc/article/details/51595231



内容概要:本文详细探讨了双馈风力发电机(DFIG)在Simulink环境下的建模方法及其在不同风速条件下的电流与电压波形特征。首先介绍了DFIG的基本原理,即定子直接接入电网,转子通过双向变流器连接电网的特点。接着阐述了Simulink模型的具体搭建步骤,包括风力机模型、传动系统模型、DFIG本体模型和变流器模型的建立。文中强调了变流器控制算法的重要性,特别是在应对风速变化时,通过实时调整转子侧的电压和电流,确保电流和电压波形的良好特性。此外,文章还讨论了模型中的关键技术和挑战,如转子电流环控制策略、低电压穿越性能、直流母线电压脉动等问题,并提供了具体的解决方案和技术细节。最终,通过对故障工况的仿真测试,验证了所建模型的有效性和优越性。 适用人群:从事风力发电研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解DFIG工作原理、掌握Simulink建模技能的研究人员;旨在帮助读者理解DFIG在不同风速条件下的动态响应机制,为优化风力发电系统的控制策略提供理论依据和技术支持。 其他说明:文章不仅提供了详细的理论解释,还附有大量Matlab/Simulink代码片段,便于读者进行实践操作。同时,针对一些常见问题给出了实用的调试技巧,有助于提高仿真的准确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值