小议设计模式

好多程序猿案头都有本书叫《设计模式》或者《XX设计模式》,我没有,我有着深深的自卑感,因为我是个半吊子,硬件没做好,软件也是半路出家,认为自己的智商看不懂算法啊、架构啊神马的,所以一直没敢碰这类东西,就是被逼着捋起袖子来开干了,干了好几年,最近总算有胆量想想是不是该提高一下了,恰好在做的项目有些设计思路,又怕是个野路子打法,不足以撑起项目骨架,于是狠研究了一番设计模式,有些感触。

如果入行的时候好好学习一下设计模式就不会走那么多弯路了,23种模式基本涵盖了编程所使用的设计方法,总结的很到位,GoF了不起,但总觉得哪里不对劲,细想之下,其并不是创新和发明,不是学习了就能大杀四方,万军丛中取敌首级的绝世武功,而只是一种方法总结归纳,帮助程序猿更快更好的设计程序、优化结构,方便在一致的认识水平上交流经验。

设计模式之于程序语言,就好比文章体裁之于文字,文章体裁有记叙文、说明文、议论文等,我们小学初中的时候都有写作文的经历,老师会教一些关于文章体裁的知识,告诉我们记叙文的结构是什么样的,分哪几部分,每部分主要写些什么,怎么开头,怎么结尾,那时候,我觉得我是很反感的,写作文就是写作文,为什么要强行规定怎么写呢,我愿意怎么写就怎么写,那多畅快,虽然按照老师教的方法写起来结构清晰,目的明确,易读易理解。现在我并不排斥体裁分类了,但在我写本文的时候并未考虑这是一篇说明文还是记叙文,我只是按照自己的想法来写,老师教的方法已经融入其中,我已不去想它而已。

那么设计模式也是这样的,编程初学是要学的,可以努力去理解,在编程过程中多思考,仔细研究使用设计模式,但重点是不能滥用,不能写个printf还要套个模式,所有单个对象都用单例模式来编写,其结果是出了个编程界的八股文,简单的事情反而复杂化了,设计模式本身的价值就是结构清晰化合易读性上,滥用反而会起到反效果。

我们最终的目的是运用设计模式来更好的解决问题,不是仅仅为了在设计过程中应用上了某某设计模式,我在不了解设计模式之前实际上已经用到了一些设计模式方法,没学过记叙文写作方法就写不了记叙文么?因此,我觉得运用设计模式的最高境界是"眼中有码而心中无码"。当你不再去想设计模式而是拿到一个软件任务,分析出一种实现方法正好符合某某模式。

我觉得设计模式更适合于重构的时候使用,在设计前期就把设计结构想好,并且能够应付设计过程中的功能添加和不断的迭代是不现实的,还有很重要的一点,尤其在国内,往往没有设计前期这一说,为了及时响应客户或者占据市场有利地形,上来就得捋起袖子干了,还深思熟虑啥架构、模式神马的,这时候良好的设计模式训练会在潜意识里帮助程序猿快速找到一个不那么丑陋的设计思路,而更大的设计模式应用之地都在重构过程中了。

总结,需要学习设计模式,但不能盲目的到处使用,要理解并融会贯通,实际的项目也不是一两个设计模式就能搞定的。在实际项目中为了效率和成本可能还要放弃代码的可读性和扩展性,而选择丑类却高效的方法。设计模式并不是灵丹妙药,并不能提高代码执行效率,其主要贡献是提升代码的可读性、可兼容性和扩展性,方便调试、排错、部署、维护和升级。

时间: 2024-11-05 21:34:10

小议设计模式的相关文章

Java设计模式——创建型模式之单例模式

一.概述 作为第一个出场的设计模式,有必要先介绍一下设计模式(引用自百度百科): 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计模式使代码编写真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 设计模式概念的介绍,参见:http://blog.jobbole.com/101076/ 其中涉及的设计原则的概念,参见随笔:http://www.c

10大APP界面框架设计模式详解

随着移动互联网的发展,移动app已经成为了每个互联网公司的标配了,那作为产品经理,我们如何设计出更加符合用户体验的app产品呢?今天和大家分享的就是10中最常见的app界面光甲设计模式,一起来看看吧. 1.标签导航 标签导航是十大界面框架设计里最常用的界面框架设计,也是被业界之内公认的一种普遍使用的页面框架设计.那么这种页面框架设计在作业方面对一个用户来说也是最常见的一种页面框架设计,比如说微博.微信.手机百度.支付宝.淘宝,这些我们所谓的超级APP都是运用的标签导航,无一例外.从这个角度也可以

[js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表

所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的 把一个成型的产品组成部件,分成一个个独立的部件,这种方式可以做出很多灵活的产品,这就是组合模式的优势 比如:家用台式机电脑,要求配置比较低, 这个时候只需要主板+电源+内存条+机箱+显示器+外设就可以了,不需要配置独立显卡 鸡腿堡+鸡翅+紫薯

Happy 设计模式之适配器模式(JAVA)

设计模式-适配器模式 适配器模式定义 适配器模式,将一个类的的接口转换成客户或者产品希望的接口形式,就是原本不兼容或者甚至不相干的接口不能一起工作的接口一起工作,完成需求或者客户的需求. 适配器模式的使用场景 1.当你使用一个已经存在的类,而他的接口不符合你的需求. 2.你想要创建一个复用的类,该类可以与其相关的类或者不可见的类协同工作. 适配器角色 Target:目标接口 TargetImpl:目标实现类 Adapter:适配器 Adaptee:被适配者 代码解析: package com.d

设计模式 2/23 工厂模式

工厂模式是最常用的设计模式之一,用好了,代码优雅,可维护性高,对系统设计会上一个台阶 为什么这么说,因为工厂模式可以牵扯出抽象工厂模式,也有大家都会聊到的简单工厂模式 我们要了解一点,23中设计模式中,不包含简单工厂模式,之所以大家会去聊这个,四个字,渐进明细 通过对简单工厂模式的了解,我们引入工厂这个词,不然一个写代码的,天天给他讲工厂,工厂,工厂,西厂,东厂,会晕 同时,通过逐步的深入,从简单工厂,到工厂模式,再到抽象工厂,渐进明细的过程,逐步深入的理解,比较优劣,择优而为我们所用. 试想我

Java设计模式学习笔记,一:单例模式

开始学习Java的设计模式,因为做了很多年C语言,所以语言基础的学习很快,但是面向过程向面向对象的编程思想的转变还是需要耗费很多的代码量的.所有希望通过设计模式的学习,能更深入的学习. 把学习过程中的笔记,记录下来,只记干货. 第一部分:单例模式的内容 单例模式:类只能有一个实例. 类的特点:1.私有构造器:2.内部构造实例对象:3.对外提供获取唯一实例的public方法. 常见的单例模式实现有五种形式: 1.饿汉式. 2.懒汉式. 3.双重检查锁式. 4.静态内部类式. 5.枚举式. 以下分别

设计模式之单列模式

设计模式之单列模式 1,何为单列模式? 即singleton 在某个类采用了单列模式之后  其只能有一个实列对象 ,并且这个实列对象只能有内部自己创建并提供给外部的调用. 2.实现单列模式的方法 分为 :饿汉式 ,懒汉式 下面为饿汉式实现代码: public calss Singleton1{ //将构造函数私有化 防止外部通过new来创建对象 private Singleton1(){ } //创建一个私有静态变量并直接初始化 类加载的时候直接创建对象 private static Singl

设计模式之原型模式(Prototype)

1.初识原型模式 大家都知道连锁机构是现在灰常流行的商业模式,比如咖啡之翼,那么假设咖啡之翼要在长春新建立一个分店,所经营的产品和以前在其他的城市已经存在的店经营的产品差不多,那么面向对象开发的角度怎么解决这个问题呢?难道要重新的实例化一个咖啡之翼的店??这显然不太好吧,咖啡之翼里面经营的产品(假设是属性吧)都需要重新写,这就是在做大量的重复工作啊,这显然是不符合OO开发思想的.遇到这样的情况,并不是重新建立一个类来解决这样的问题,而是通过设计模式中的"原型模式"来解决这种问题.是这种

对设计模式的总结之简单工厂与策略模式

前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓,本文就说说我对本人对简单工厂模式.策略模式的见解. 简单工厂模式与策略模式 简单工厂模式 工作中,常常遇到需要做一个功能(鸭子),这个功能中含有可控个数的子操作功能(鸭子叫,鸭子跑,鸭子飞),而且子功能在不同的情况下处理方式又不相同(成年鸭子/小鸭子叫,成年鸭子/小鸭子跑,成年鸭子/小鸭子飞).我