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

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

 

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

 

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

 

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:创建一个全局对象

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

 

 

时间: 2024-11-02 06:03:03

大道至简:让你顿悟创建型设计模式的相关文章

创建型模式--工厂模式

工厂三兄弟之简单工厂模式(一) 工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式.本章将要学习的简单工厂模式是工 厂方法模式的"小弟",它不属于 GoF 23 种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门.此外,工厂方法模式还有一位"大哥"--抽象工厂模式.这三种工厂模式 各具特色,难度也逐个加大,在软件开发中它们都得到了广泛的应用,成为面向对象软件中常用的创建对象的工具. 图

《架构真经:互联网技术架构的设计》大道至简

大道至简 无论从哪个角度来看,杰瑞米·金都有一个成功和绚丽的职业生涯.20世纪90年代中期,在互联网大潮来袭之前,杰瑞米参与了海湾网络公司SAP项目的成功实施.从此,杰瑞米投身互联网大潮,任Petopia.com公司的技术副总裁.他经常调侃说,在Petopia.com公司的这段经历,相当于从"硬汉拓展营大学"取得了"现实世界的工商管理硕士".离开Petopia.com后,杰瑞米加入eBay,作为总监负责新一代商务平台V3的架构.如果说杰瑞米在Petopia.com完

李书福:大道至简

本刊研究部 编写 李书福,现任吉利集团董事长.1963年出生于浙江省台州市,有过多次创业经历.他不是那种可以用商学院教科书定义的企业家,之所以成为如今中国企业界炙手可热的风云人物,不仅因为其领导下的吉利汽车超常规地发展为中国最大的民营汽车企业,更因他时常语出惊人,对行业和管理提出有别于学院派.属于自己的独到理解 "汽车狂人"李书福被很多人称作中国的"草根企业家",说他是狂人,源自于他的坚定和执着:说他是草根,那是因为他一切从实际出发,关注细节,深具大道至简的朴素精神

大道至简 Java 23种模式一点就通

一.创建型模式 FACTORY?人才市场:以往是要哪个人才,就找哪个人才,效率低,现在有了人才市场,我们只需直接去人才市场挑一个好了: BUILDER?生产流水线:以前是手工业作坊式的人工单个单个的生产零件然后一步一步组装做,好比有了工业革命,现在都由生产流水线代替了.如要造丰田汽车,先制定汽车的构造如由车胎.方向盘.发动机组成.再以此构造标准生产丰田汽车的车胎.方向盘.发动机.然后进行组装.最后得到丰田汽车: PROTOTYPE?印刷术的发明:以前只能临贴才能保持和别人的字迹基本相同,直从印刷

.NET设计模式(7):创建型模式专题总结(Creational Pattern)

概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模式. 为什么需要创建型模式 所有的创建型模式都有两个永恒的主旋律:第一,它们都将系统使用哪些具体类的信息封装起来:第二,它们隐藏了这些类的实例是如何被创建和组织的.外界对于这些对象只知道它们共同的接口,而不清楚其具体的实现细节.正因如此,创建型模式在创建什么(what),由谁(who)来创建,以及何

创建型模式--抽象工厂模式

工厂三兄弟之抽象工厂模式(一) 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中 存在大量的工厂类,势必会增加系统的开销.此时,我们可以考虑将一些相关的产品组成一个"产品族",由同一个工厂来统一生产,这就是我们本文将要学习的抽 象工厂模式的基本思想. 界面皮肤库的初始设计 Sunny 软件公司欲开发一套界面皮肤库,可以对 Java 桌面软件进行界面美化.为了保护版权,该皮肤库源代码不打算公开,而只

Java经典设计模式之五大创建型模式(附实例和详解)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.概况 总体来说设计模式分为三大类: (1)创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. (2)结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. (3)行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解

Java技术_每天掌握一种设计模式(003)_使用场景及简单实例(创建型:工厂方法)

Java技术_每天掌握一种设计模式(001)_设计模式概念及分类 Java技术_每天掌握一种设计模式(002)_使用场景及简单实例(创建型:单例模式) Java技术_每天掌握一种设计模式(003)_使用场景及简单实例(创建型:工厂方法) Java技术_每天掌握一种设计模式(004)_使用场景及简单实例(创建型:抽象工厂) Java技术_每天掌握一种设计模式(005)_使用场景及简单实例(创建型:建造模式) Java技术_每天掌握一种设计模式(006)_使用场景及简单实例(创建型:原型模式) 1.

创建型、结构型、行为型模式(2)

来源:http://blog.csdn.net/wulingmin21/article/details/6757111 创建型模式 Singleton模式解决的是实体对象个数的问题. 除了Singleton之外,其他创建型模式解决的都是New所带来的耦合关系. Factory Method,Abstract Factory,Builder都需要一个额外的工厂类来负责实例化"易变对象",而Prototype则是通过原型(一个特殊的工厂类)来克隆"易变对象". 如果遇到