1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 设计模式系列漫谈之二 - 工厂方法模式

设计模式系列漫谈之二 - 工厂方法模式

时间:2018-10-12 16:11:40

相关推荐

设计模式系列漫谈之二 - 工厂方法模式

故事

10月1日是小雪的生日。许多追求者都想在生日那天给小雪一份意想不到的惊喜,并且表达自己的爱意。这些追求者绞尽脑汁的为小雪发送一个比较有创意的祝福短信。看来,小雪今年的生日过得肯定非常幸福。但是,小雪的手机还是比较特别,只能接受来自跟她手机品牌相同的短信。怎么办呢?

这些追求者正在为如何发送生日祝福的问题发愁的时候,善良的小雪为了不辜负这些追求者的良苦用心,为追求者提供统一的发送方法,并且实现不同品牌的手机发送短信。这样一来,这些追求者再也不用担心小雪接收不到精心准备的生日祝福了。

工厂方法模式(Factory Method)的解决方案

小雪的做法正是工厂方法模式的思想:使一个类的实例化延迟到子类。定义一个用于创建对象的工厂类,由其决定实例化同一抽象类派生出来的具体类。此模式主要包括三个角色:工厂类,抽象类(接口),具体类。

接口如下: namespaceXiaoXue

{

publicinterfaceIMessage

{

voidSendMessage(objectMsg);

}

}工厂类如下: namespaceXiaoXue

{

publicclassMessageFactory

{

publicstaticIMessageCreateMessage(stringType)

{

IMessagemessage=null;

switch(Type)

{

case"NOKIA":

message=newNOKIA();

break;

case"MOTOROLA":

message=newMOTOROLA();

break;

case"SANSUNG":

message=newSANSUNG();

break;

}

returnmessage;

}

}

}

根据不同的手机类型实现的具体类如下: namespaceXiaoXue

{

publicclassNOKIA:IMessage

{

publicvoidSendMessage(objectmsg)

{

//发送NOKIA短信;

}

}

publicclassMOTOROLA:IMessage

{

publicvoidSendMessage(objectmsg)

{

//发送MOTOROLA短信;

}

}

publicclassSANSUNG:IMessage

{

publicvoidSendMessage(objectmsg)

{

//发送SANSUNG短信;

}

}

}

这样一来,这些追求者就很方便给小雪发送生日祝福了,例如Nokia手机发短信:

IMessage message=MessageFactory.CreateMessage("NOKIA");

message.SendMessage("生日快乐,祝小雪越长越漂亮。喜欢你的张三");

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。