设计模式在现代语言中的优化

什么是设计模式

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结;它描述了某种重复发生的问题,并提供了对应解决某种问题方案的模板.

为什么需要设计模式

随着软件需求的日益复杂,软件工程规模和复杂度变得越来越难以掌控,实现一种可以软件标准化,快速化,批量化生产,提高软件开发效率和质量的解决方案尤为重要,而设计模式也由此诞生的.

设计模式优点

  1. 有利于代码重用,增加代码的可读性及拓展性.

  2. 让代码更容易被别人理解.

  3. 保证代码可靠性.

  4. 弥补语言在某些设计方面的缺陷,提供设计上的一些解决方案.

设计模式缺点

  1. 设计模式其实就是一种设计思想,具有一定的针对性,不能理解容易滥用.

  2. 对于面向对象而言,使用设计模式,一方面会增加很多新的类,另一方面类和继承等特点使得程序会多很多指针操作来定位函数入口和自身要维护虚拟方法表等额外的工作,从而降低程序运行效率,所以也并不是任何场合都需要使用设计模式.

设计模式对于现代语言优化

设计模式某种意义上是为解决语言本身设计上的缺陷而出现的一些解决方案。不同的语言具有不同的语法特性和设计思想,从而有不同的设计模式;只要存在某些特定的上下文中有似曾相识的美妙的解决方案,那么模式也就出现了。不同语言在使用和实现相同的设计模式也是不一样的,如:在Lisp这样的动态(函数)语言中,由于不需要管理类和对象,不需要解决类给设计上带来的限制,GoF的23种模式中有16种要么用不着,用语言本身提供的机制就可了,要么实现起来要简单得多。比如,Factory和Singleton可以用MetaClass实现,Factory和Command可以用闭包实现,等等;Smalltalk语言本身也提供了MVC等设计模式.

下面主要说一下面向对象编程语言设计模式,函数式编程语言设计模式:

  1. 函数式编程设计模式:

    很多人都认为函数式编程是不需要设计模式的,其实不然,设计模式某种方面来说只是某种特定场合,某种问题的具体解决方案及设计思想的一种经验总结;事实上,技术界在这方面已经做了很多工作,如:Eugene Walingford的模式语言Roundabout和Envoy等,所以函数式编程也是有设计模式的。 oop的设计模式也可以应用于函数式编程语言。具体的设计模式后期补充。

  2. 面向对象编程设计模式,衡量设计模式的基本原则 :

    (1) 单一职责原则:

    不要存在多于一个导致类变更的原因。通俗的说,即一个类仅仅负责一项职责。

    (2) 里氏替换原则:

    全部引用基类的地方必须能透明地使用其子类的对象。

    (3) 依赖导致原则:

    高层模块不应该依赖低层模块,二者都应该依赖其抽象。抽象不应该依赖细节。细节应该依赖抽象。

    (4) 接口隔离原则:

    客户端不应该依赖它不须要的接口。一个类对还有一个类的依赖应该建立在最小的接口上。

    (5) 迪米特法则:

    一个对象应该对其它对象保持最少的了解。

    (6) 开闭原则:

    一个软件实体如类、模块和函数应该对扩展开放,对改动关闭。

参考资料

  1. GOF的设计模式
  2. Head First设计模式
  3. 后续资料再补充
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员之光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值