设计模式是从许多优秀的软件系统中总结出来的代码设计经验,也就是一些扩展性、灵活性好,易于维护和复用的设计方案,这可是前辈们的头破血流换来的。我们要站在巨人的肩膀上,吸取宝贵的经验,设计出优秀的软件系统来面对这个需求日新月异的信息时代。
设计模式以实现”六大原则“为方针,主要有23个,分为三大类。
这三大类分别是创建型、结构型、行为型,下面来具体介绍。
社会化的分工越来越细,在软件设计方面也是如此。由于对象的创建会消耗掉系统的很多资源,所以有必要单独对对象的创建进行研究,将对象的创建与使用分开,从而提高效率,节省资源,优化系统结构。
创建型有五种,分别是:
其中单例模式解决的是实体对象个数的问题。除此之外,其他创建型模式解决的都是new所带来的耦合关系。工厂模式、抽象工厂模式、建造者模式都需要一个额外的工厂类来负责实例化“易变对象”,而原型模式则是通过原型(一个特殊的工厂类)来克隆“易变对象”。如果遇到“易变类”,起初的设计通常从工厂方法开始,当遇到更多的复杂变化时再考虑重构为其他三种工厂模式。
解决了对象的创建问题之后,随之浮出水面的问题就是对象的组成以及对象之间的依赖关系。如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。这就好比是盖房子,动工之前要规划好房子的框架,布局好各个房间的位置,装修的时候就不必拆东墙补西墙了。
这7种模式都与接口有关,因为设计结构要考虑各部分之间的关系,从而组装成一个整体。适配器模式注重转换接口,将不吻合的接口适配对接。桥接模式注重分离接口与其实现,支持多维度变化。组合模式注重统一接口,将“一对多”的关系转化为“一对一”的关系。装饰模式注重稳定接口,在此前提下为对象扩展功能。外观模式注重简化接口,简化组件系统与外部客户程序的依赖关系。享元模式注重保留接口,在内部使用共享技术对对象存储进行优化。代理模式注重嫁接接口,增加间接层来实现灵活控制。
对象的创建和结构问题解决了,但不能把它放在一边不管了,对象是活的,要工作,所以最后要解决对象的行为问题了。如果对象的行为设计的好,它们之间的协作效率就会提高。
上面是各个模式的定义,下面我们来看看它们各自的特点,以及之间的异同点。
软件开发是一门技术,更是一门艺术。设计模式是面向对象软件开发的入门功夫,它为构建可维护性和可复用性俱佳的软件而诞生。这经典的23种设计模式各有千秋,使用的时候要权衡利弊,有时候它们的优点也恰恰是缺点,同时也不能把它们孤立起来,寻找联系与区别,结合实际生活。总之,这部分的学习还比较有趣,主要是那本《大话设计模式》的功劳。现在一看模式名称,就能想到它背后的小故事。现在其实才刚刚认识设计模式,理解的也很浅显,今后的学习和实践中离不了设计模式,慢慢和他深交。
原文地址:http://blog.csdn.net/cyl_happygirl/article/details/27177031