1. 云栖社区>
  2. 博客列表>
  3. 正文

大道至简:让你顿悟创建型设计模式

华仔爱技术 2010-03-13 10:23:00 浏览549 评论0

摘要: 大道至简:让你顿悟创建型设计模式   佛教中有一种修行方法叫做“顿悟”,简单的说突然间想明白了。我不是佛教弟子,但幸运的是这两天重温设计模式的时候,也顿悟了一把:每个创建型模式一句话总结!   既然是顿悟,我就不详细介绍了,设计模式相关的书上都会有详细的介绍,我只把我顿悟的内容共享出来,看看你是否可以顿悟:)?   Abstract Factory:创建一组相关对象 什么叫做“相关对象”,当然就是一组有关系的对象了。

大道至简:让你顿悟创建型设计模式

 

佛教中有一种修行方法叫做“顿悟”,简单的说突然间想明白了。我不是佛教弟子,但幸运的是这两天重温设计模式的时候,也顿悟了一把:每个创建型模式一句话总结!

 

既然是顿悟,我就不详细介绍了,设计模式相关的书上都会有详细的介绍,我只把我顿悟的内容共享出来,看看你是否可以顿悟:)?

 

Abstract Factory:创建一组相关对象

什么叫做“相关对象”,当然就是一组有关系的对象了。

逻辑上的解释还是很难以理解,但是举个简单的例子相信大家就都明白了:手机主题。

 

手机主题大家肯定都玩过,比如说“变形金刚”主题、“阿凡达”主题、“浪漫XXX”主题等等,你改变了主题后,你的“桌面、屏保、来电铃音、短信铃音、色彩、按钮。。。。。。”等都会跟着一起改变,这里就是一个典型的Abstract Factory设计模式:“主题”是Abstract Factory,“桌面、屏保、来电铃音、短信铃音、色彩、按钮。。。。。。”就是相关对象,它们之间的关系就是“具有相似的风格”。

 

Builder:创建一个复杂对象

什么叫“复杂对象”,地球人都知道,我就不啰嗦了。

 

但实际应用中怎么判断呢?我有一个很简单的方法:只包含原生数据(即int/String/float)属性的对象是简单对象,包含其它对象的是复杂对象,数量越多越复杂

举例来说:一间房子包含门、窗、地板、天花板、家具等等,“房子”就是一个复杂对象,“门、窗、地板、天花板、家具”相对来说就是简单对象。之所以加上“相对来说”来修饰,是因为“门、窗、地板、天花板、家具”本身也可以是复杂对象,这个需要根据实际项目需要来判断。

 

Factory Method:创建一个参数化对象

什么叫“参数化对象”,相信大家都遇到过,简单的说就是根据参数来创建对象。

 

举个实例就很明白了:

Class AnimalFactory{

Animal createAnimal(String animalType) {

    if( animalType.equals(“”) ){

        return new Pig();

    }

    if( animalType.equals(“”) ){

        return new Dog();

    }

    if( animalType.equals(“”) ){

        return new Person();

    }

    if( animalType.equals(“公牛”) ){

        return new Bull();

    }

}

 

Prototype:创建一个组合对象

什么叫“组合对象”,有了前面三个创建型模式,为什么还要这个模式呢?

主要的原因就是前面三个模式都是固定的,一旦写完,能够创建的对象就固定了,一般情况下没有问题,但如果要进行灵活的排列组合的话,那么就需要创建非常多的各种子类。

 

还是以“手机主题”来说吧,如果你的手机上有10个桌面、10个屏保、10个来电铃音、10个短信铃音、10个色彩、10种风格的按钮。。。。。。”那么排列组合下来可以有多少种“主题”呢?100万个主题,你的手机上有这么多主题么?

而通过Prototype,你就可以任意定制主题了,不用创建那么多的主题。

 

所以,Prototype与前面三个模式相比的特点就是“灵活”。

 

Singleton:创建一个全局对象

最后这个模式是最简单的了,相信不用顿悟你也能够明白:)

 

 

本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至yqeditor@list.alibaba-inc.com;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

用云栖社区APP,舒服~

【云栖快讯】浅析混合云和跨地域网络构建实践,分享高性能负载均衡设计,9月21日阿里云专家和你说说网络那些事儿,足不出户看直播,赶紧预约吧!  详情请点击

网友评论

关注
华仔爱技术
热爱技术的10多年IT老兵,既能深入底层写代码...
148篇文章|730关注
是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有... 更多>

共享带宽提供地域级带宽共享和复用功能,支持同地域下所有弹性公网IP共享带宽,进而让绑定弹性公网IP的云服务器EC... 更多>

阿里云消息服务(Message Service,原MQS)是阿里云商用的消息中间件服务。与传统的消息中间件不同,... 更多>

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本... 更多>
MaxCompute75折抢购

MaxCompute75折抢购