我是靠谱客的博主 自觉刺猬,最近开发中收集的这篇文章主要介绍关于设计模式中创建型模式的一点理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        这两天在看有关设计模式的东西,首先入手的是创建型模式,包括工厂模式、抽象工厂模式、生成器模式、原型模式和单例模式五种,通过几天的学习,有了一点自己的理解。如何来区分这五种模式呢,我想通过吃饭的例子来说明。

首先我们一般是在家里自己做饭吃的,一般是一个人掌勺,想吃什么就吃什么,但是要事先商量好买好菜,这个就是工厂模式了,一个工厂类,可以设计成能生产多种产品的类,但是在使用时具体生产什么类有用户输入的参数决定,这样好是很好,但是人多了就不好了,我要做很多的菜,可能前面做的凉了,后面的还没做好,并且做这么多,说不定中间就会忘记自己到底做了哪些菜了,工厂模式也是一样,如果用户要用工厂类创建多个对象,就有可能造成混淆,连自己多记不清都要创建什么了,怎么解决这个问题呢?呵呵,很好解决,人多了就上饭店呗。

到了饭店,拿出菜单一看,点菜有两种方式,一种是套餐,你点一种套餐,那么你这次吃饭的主菜和甜点什么的就都给你确定了,你就等着吃就是了,这就是抽象工厂模式,他通过管理七八个厨师,创建的是一个产品族,就像你可以点不同的套餐一样,你也可以利用抽象工厂模式创建不同的产品族,但是每个产品族中的产品是不能改变的。抽象工厂模式就是对工厂模式的进一步包装,主要也是应用于产品族的创建。套餐好是很好,我只要说要哪个套餐,他就会拿我的意思做出来,但是如果这种情况,套餐中有某一道菜有人不喜欢吃或者有某种禁忌,但其他菜又都是很好而其他套餐中有没有的时候,那我不能点这个套餐岂不是他可惜了,那我们就用另一种方式点菜吧

另一种方式就是我就主菜放在一起,甜点放在一起,。。。。,你可以随意点你需要的,但是你必须每种都要点,比且规定主菜要点8个,甜点两个。。。。,这就是生成器模式来了,他与抽象工厂模式的区别在于可以自由组合,更加人性化了,使用范围更广。

当然,假如你到了一个新的环境,你完全不知道该吃什么或者这里什么东西适合你的口味,怎么办呢,哈哈,正好碰到一老乡了,你看他吃的挺香的,如是你对服务员说“给我上和他一摸一样的菜,但是少放点辣椒”,这不就知道吃什么了吗!这就是原型模式,望文生义,即将别人的复制一下拿来自己用,其中可以根据类本身提供的方法对其中的一些特性进行修改,如“少放点辣椒”。

当然你到了一个新的环境时还有一种点菜方式,“老板,你们这里的特色菜是什么?给我上你们的特色菜吧”,哈哈,不幸的是,该店的特色菜是烤全猪,烤全羊,给你上一道你能吃完吗?还好老板也想到了这一点,所以他们一天只做一种,如今天做了烤全猪就不会做烤全羊了,并且由第一个点这道菜的人决定今天特色菜是什么,这样,一整天的客人就吃这道菜了,每点这道菜的人都是从上面切一部分下来吃,这就是单例模式,很容易理解,一个程序中只有该类的一个对象,并且是全局的,之后对该类即使使用的是看似创建的手法,但实际上使用的也是同一个实例。

 

好了,关于这五种模式的理解已经说完了,下面说一下实现方式吧,工厂模式是利用类的抽象完成的,UML如下:

对于抽象工厂模式,它仅仅是对工厂模式进行进一步包装处理,UML图如下:

比较晚了,后面几种模式就不贴图算了,还得自己慢慢画,有时间再补

 

最后

以上就是自觉刺猬为你收集整理的关于设计模式中创建型模式的一点理解的全部内容,希望文章能够帮你解决关于设计模式中创建型模式的一点理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部