`

设计模式(要提高编程水平进)

阅读更多

     设计,是编程语言常提常新的话题了。其实看拿哥们写的代码,自然自己的编程方式和方法也会提高。

好的代码,拓展性强的代码不好写。。。这也是拿哥么自豪的地方,也是经验的结晶。。所以我们也要提高编程能力,才能得到更好的回报和避开麻烦。嘿嘿。那我们就开始把

     什么是模式,英语template,模式就是具有代表性,具有举一反三的能力的格式。。。:)

如果看过我写的其他关于模式的文章之后,那读者会认识四人帮的,您会问 啥四人帮,那不是毛老那个时代的么,怎么跑到设计模式里来了。。。嘻嘻,这个您就要看看我写的关于设计模式的文章了。

     在这里就简单和大家说说,“四人帮”其实是1995年四个人发布的关于设计模式是书,那个时候还没有java那。。或者java还是新的语言,但设计模式已经出来了,慢慢的个个语言就写了自己的设计模式。其实也就是换汤不换药,一样的东西,用不同的语言实现的。在这里为四人帮众人表示感谢,谢谢他们写了这么好的书,也为其中一位拿哥的逝世感到惋惜。。。

      言归正传设计也就是建大楼,谁建的好,谁建的快,谁建的更有扩展性,这是各个老程序员追求的,他们不管新技术,新技术太多谁能学的过来,但编程的能力,老人新人一看就知道。所以让大家都羡慕你的代码。这才是我们追求的。。。

如果感觉性能是后期维护的,那你就错了。性能在设计中,性能也是coding中。。举一个小例子,我想看到这篇文章的哥哥姐姐弟弟妹妹们,嘿嘿,你们是不是都写过这样的代码

while(true/false)

      //coding

 

以上代码直到false的时候才break出来,对吧。但有没有想过假如true要100次那?或者更高那?

这样的性能能接受么?如果是user是1000000后面的0很多,这样的性能能接受么

其实在while中做个小判断,直接break这样的代码性能上会好一点,或者就用代理模式来做filter是不是更好那

性能其实也在设计里

      其实说了那么多主要是软件的维护和可扩展行的分析。。。我旁别的程序员一致同意,软件开发的钱大都用到了软件的运营和维护上了,很少用在开发上,这个是不争的事实,那怎么样钱话的少,维护和增加功能更加方便那

那就要看,初期设计的怎么样,和中期代码实现的怎么样了,我现在就遇到一个很糟糕的代码,维护起来很费劲,增加功能的话,以前的代码耦合性太高了,导致要增加的话,改动很大,可是任务来了,怎么的也要改啊,又堆了很多垃圾代码,有这么一天我实在看不下去了,就和一个同事把其中一块地方改了,现在看上去还行把,只不过内部已经烂了,在怎么搞其实也就那样。。。

所以软件开发不是新人的天下啊,在过个20年,我想我们上一代的老程序员会很抢手的,现在就是。

还有一点,我想在这说明一下,谁说程序员是年轻人的天下,到老了,程序员就不行了。。。这话太天真了。。。这些话也是那些更本就不配当程序员的人说出来的。。。在美国和日本,老程序员多的事,怎么中国就不行了。。

其中有一点还是很正确的,软件盗版其实很不好,这样会影响一个行业的发展的。。。

好了说了这么多,基本思想就是 软件的维护和扩展很重要,为了以后的的维护大家要写出让人羡摹的代码

我们下面就开始:

1.习惯

嘿嘿,我想大家是不是都有个习惯,接到任务上来就开始coding,这么做是错误的,正常的顺序是thinking,designing,coding。按这个顺序写出的代码会比你直接coding的代码好的多。

2.方法

下面我就细细讲讲怎么designing

2.1  抽象是关键

抽象是很关键的,在四人帮的书中,大家会发现有的模式,叫开闭模式,这个和市面上的模式不一样,这也是我写这篇文章的重点。嘻嘻

开闭模式-----------------------------------------对扩展开放,对修改关闭

Software entities should be open for extension and closed for modified

基本实现大概是这样的先抽象一个类,这样扩展的话就很方便,满足开放,修改么,其实大家已经看不来了,在抽象类中修改没有用,修改的业务逻辑都在其实现类中,所以写业务逻辑的类,最好是抽象出来

其实这个模式还有一个别称,可变性封装原则

原则总结:

一种可变性不应当散落在代码的很多角落里

一种可变不应该和另一种可变混在一起

3.重构(业务)

其实大家知道重构是面向对象多态的具体表现,这个模式有松耦合的作用,而且能样繁重的逻辑变的简单

尽量用重构来将逻辑变的少一些,让逻辑去体现子类的个性把

4.接口

接口其实和抽象的概念是一样的,在这里我主要介绍接口的常用做法:

4.1单方法接口:举个例子:Runnable 接口 大家懂的

4.2标识接口:举个例子:Serializable接口

4.3常量接口:有点像枚举,自不过是用来提共同的

5.里氏代原则:
任何基类出现的地方,子类一定可以出现
6.依赖倒转原则
要依赖与抽象,不要依赖于实现
7.合成/聚合服用原则
要尽量使用合成/聚合,而不是继承关系达到复用的目的
8.迪米特法则
一个软件实体应当与尽可能少的其他实体发生相互作用
9.接口隔离原则
尽量使用可能小的单独的接口,而不要提供大的总接口
子类扩展超类的责任
不要从工具类继承
 好了以上的原则记住,designing的时候,就会写出很好的代码来。。。嘻嘻

剩下的就是一些设计模式了

网上有很多介绍的,我也写了很多模式的帖子,是转载的,他写的很好。在这里也不做介绍了

在这我给个关于我写的文章的帖子URL 点左右就可以看到四人帮的力作了

 Java PatternDesign of GOF(四人帮力作,享誉15年)第十六模式永久链接: http://chenhailong.iteye.com/blog/901766

0
1
分享到:
评论

相关推荐

    MFC深入浅出带目录完整版(李久进chm版).rar

    3. **文档/视图架构**:深入学习MFC的核心设计模式——文档/视图架构,它是如何处理数据和用户界面之间关系的。 4. **消息处理**:理解MFC的消息映射机制,以及如何编写消息处理函数来响应用户的操作。 5. **控件...

    C++MFC教程

    对于初学者:应该选择一些内容比较全面的书籍,并且书籍中的内容应该以合理的方式安排,在使用该书时可以达到循序渐进的效果,书中的代码要有详细的讲解。尽量买翻译的书,因为这些书一般都比较易懂,而且语言比较...

    vb仓库管理系统设计(论文+源代码).zip

    6. **程序结构和设计模式**:遵循良好的编程习惯,如模块化设计,使用面向对象的设计模式如MVC(模型-视图-控制器)提高代码的可维护性。 7. **报表生成**:利用Crystal Reports或VB内置的报表控件生成各类业务报表...

    JAVA实例开发源码-进销存管理系统(源码+数据库+使用说明).zip

    进销存管理系统是一款基于JAVA技术实现的企业级应用,主要用于管理企业的进货、销售和库存等核心业务流程。...同时,对于想要从事软件开发或者提高自身技术水平的人来说,这是一个极好的实战案例。

    从头开始学习单片机(共30课)

    ### 单片机学习知识点详解 #### 一、单片机基础概念 - **定义**:单片机是一种集成在一块芯片上的微型计算机系统,它将CPU、存储器(ROM和RAM)...此外,通过扩展练习,还可以锻炼解决实际问题的能力,提高编程水平。

    基于java的病人检验结果系统的设计与实现论文(1).docx

    Spring MVC是Spring框架的一个模块,它提供了一种清晰的模型-视图-控制器(MVC)设计模式实现,使Web应用程序更易于理解,简化了它的结构。Spring MVC框架简化了控制器类的编写,使得开发者可以更加专注于业务逻辑而...

    2021年最新(小米)前端面试题真题解析.rar

    - 设计模式在前端的应用,如单例模式、工厂模式等。 - 项目管理和团队协作经验,如敏捷开发、Scrum等。 这份资源不仅有助于面试准备,还能帮助开发者巩固和扩展前端知识体系,提高技术水平。通过学习和实践这些...

    电气自动化控制系统在水厂的应用 (3).pdf

    在水厂的自动化控制系统设计中,集散控制系统(DCS)与可编程逻辑控制器(PLC)加工业控制计算机(IPC)的结构模式被广泛采纳。集散控制系统(DCS)的设计思想是将控制分散到现场控制单元,并且在管理层和操作层之间...

    可编程控制器(PLC)控制顶驱钻机的应用.pdf

    顶驱钻机通常采用具有高扭矩的永磁电机,能够有效提高钻进效率。而PLC控制系统则依赖于具有高速处理能力和丰富接口的微处理器,例如文档中提到的“CPU315—2DP”型微处理器,这种处理器拥有较高的处理速度和强大的...

    C# CS超市信息管理系统毕业设计(含源文件).pdf

    这表明本设计重点在于解决超市行业的信息管理问题,通过构建信息系统提高管理效率和业务水平。 综上所述,C# CS超市信息管理系统毕业设计是一个结合了计算机编程、数据库管理、商业智能技术的实际项目,旨在为小型...

    C#微软培训资料

    编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越...

    极客学院安卓Android全套最新视频教程【17G全套视频+独家源码】

    - **MVC/MVP/MVVM模式**:在Android开发中,通常会采用MVC(Model-View-Controller)、MVP(Model-View-Presenter)或MVVM(Model-View-ViewModel)等架构模式来组织代码结构,提高代码的可维护性和可扩展性。...

    无刷直流电机的控制程序

    本项目聚焦于无刷直流电机的无传感器控制程序,使用了STM32F0系列微控制器进行双闭环控制,实现了无需额外霍尔传感器的运行模式。 首先,我们要理解无刷直流电机的工作原理。BLDC电机通过改变供电相位来控制电机...

    基于STM32的智能饮水机的设计.zip

    这个设计旨在提高饮水机的智能化水平,提供更加便捷、安全、节能的饮水服务。 1. **STM32微控制器**:STM32家族包含了多种不同性能等级的芯片,如STM32F1、STM32F4等,具有ARM Cortex-M内核,适用于各种嵌入式应用...

    基于ssm+vue+J2EE的仓库管理系统.zip

    例如,数据访问层需要设计合理的DAO(Data Access Object)接口和实现,业务逻辑层则要处理复杂的业务规则,而展示层则需确保用户界面的友好性和响应速度。同时,系统的安全性、性能优化、异常处理和测试策略也是...

    学习C++的建议

    ### 学习C++的建议 #### 一、学习路径规划与基础知识积累 ...同时,积极参与社区交流,与其他开发者互动,也是提高编程水平的有效途径。希望每位学习者都能在这条路上走得更远,最终成为C++领域的专家。

    黑白棋实例

    总的来说,这个“黑白棋实例”涵盖了从软件设计模式到具体实现技术的多个方面,对于想要提升编程技能,尤其是对游戏开发感兴趣的开发者来说,是一份非常有价值的参考资料。通过深入理解和实践这些知识点,不仅可以...

    进销存管理系统

    这个系统基于C/S(客户端/服务器)架构设计,旨在优化库存控制、销售追踪和采购管理,提高企业运营效率。 首先,我们要理解C/S架构的核心概念。在C/S架构中,客户端是用户直接交互的部分,负责数据的显示和用户输入...

    Java项目实例开发

    通过这样的系统,企业能够有效地跟踪和控制其库存水平,优化供应链,并提高运营效率。 首先,我们要理解Java作为编程语言在开发此类系统中的关键角色。Java以其跨平台的特性,丰富的类库,以及强大的面向对象编程...

Global site tag (gtag.js) - Google Analytics