快速理解设计模式之创建型设计模式(上)

导语:本文将教大家一个快速理解设计模式的方法,以及如何自己通过日常生活来体会设计模式。

前言:

虽然这个方法有让大家为了用设计模式而学习设计模式的嫌疑,或者不能让你完全意义上的理解设计模式,但是我认为先要学会用然后在把它变成自己的东西吧,怪咖们也是从这个过程走出来的,除了最早提出设计模式的J。好了废话少说,直接上内容。

内容:

我们设计高楼、桥梁都会先用前人积累的知识技术画好图纸,然后建设,所谓站在巨人的肩膀上前进才会有进步。设计模式也是一样,我们先要UML建模,然后根据模型编程,OK过程很简单吧。如果UML类中的一些继承、组合、聚合、关联关系不太清楚可以去网上查一下。我要教大家的就是用前辈设计好的各个设计模式的UML模型,编程。这样即使忘了某个设计模式的意义,下次直接看UML模型就可以了,哈哈。

1.创建型设计模式:

说到创建模式那就是创建对象了,是不是和工厂生产产品一样呢?YES。所以简单工厂、工厂方法、抽象工产就这么得名了。其实工厂方法和抽象工厂就可以理解为是简单工厂的改进,我们设计桥梁也会对图纸改进吧。

1.1简单工厂:

   1.1.2简单工厂建模

     想想,如果我们要对一个工厂的生产进行建模,应该怎么设计呢?简单点就该这么画吧,(我用类似UML模型来描述)。

 

 

1.1.3 伪代码

 

 

总结:上述就是简单工厂的模型和代码框架了,如果一时忘了简单工厂可以按照上面的思路快速恢复记忆,哇,其实这个思想我们在生活中到处都是吧,所以只要你能想到和创建、生产相关的都可以用简单工厂来实现。

1.2工厂方法模式

     简单工厂思路是简单,正常人都是这么想的。可是我们毕竟是编程的,伟大的程序员!看到简单工厂中表达依赖关系的这块代码你是否会皱眉呢?Bad taste!伟大的Programmer会告诉你,代码中不要出现switch语句,你会问whySorrymaybe you can google...

所以我们要把代码进行重构,希望能去掉switch。如果我们把每个产品的创建都放在各自的工厂中,就不需要判断了吧,试试建模:

 

好啦,我们现在来写一下伪代码:

 

 

总结:上述是对简单工厂的改进,就是我们熟知的工厂方法模式,记住了它的由来,那么这个模式就很好理解啦。

1.3 抽象工厂设计模式

前面我们讲解工厂就只考虑了所有的产品都是由一个工厂来生产,想想这个工厂的老板是不是赚疯了呢?现在竞争这么大,你这个赚钱当然会有很多其它的厂家也会来生产你的产品,太不厚道了这些人,哈哈我们建模试试呢。

 

上图中工厂和竞争工厂同时创建产品A,这个在代码中改如何表达呢?怎么知道产品A是哪个工厂创建的呢?现实生活中,一个产品肯定有厂家说明的,所以我们对上述模型稍加改进一下,给每个产品加上商家说明。

 

哈哈,看到上面的模型是不是非常激动,好啦,我们现在来写写代码:

 

上述就是抽象工厂的UML模型和代码逻辑了,通过推理一步步得到该设计模式,相信不会这么容易忘记吧。

注:本文为作者原创,如需转载请注明出处,谢谢~

                                                                             

posted @ 2013-04-22 15:37  GirlのCoding Life  阅读(1699)  评论(1编辑  收藏  举报