1)面向过程经过划分功能模块,经过函数间相互调用来实现,但需求变化时就须要更改函数,而你改动的函数有多少地方在调用她呢?关联多少数据,这是很不容易弄得清楚地地方。或许开发者本人弄得清楚,可是下一个维护人员未必可以吃透。因此,因为这种强耦合性直接致使程序的扩展性和可维护性下降,后期维护的成本天然增高了很多。编程
2)面向对象关注的是对象,对象的优势在于,能够定义本身负责的事务,作要求它本身作的事情。对象应该本身负责本身,并且应该清楚的定义责任。设计模式
3)通常面向对象开发只是关心这么几个问题:“这个东西叫作什么;他从哪里来;她能作什么事情。”,而后,具体的业务逻辑经过这些对象相互之间调用完成;然而,面向过程只是关心一个问题:“你的业务逻辑是什么”;而后,就开始面向过程编程,看似很酷,实质上由于没有合理结构话数据,致使数据的维护量增大。函数
4)面向过程设计开发相对容易,但不容易应对变化。面向对象设计开发困难,但却能更好应对变化。spa
设计模式总共23个,可是经常使用的不到10个,下面就把这23个设计模式进行整理归类,具体以下:设计
1)建立型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。代理
2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。orm
3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。对象
1)工厂方法模式:定义一个用户建立对象的接口,让子类决定实例化哪个类,工厂模式使一个类的实例化延迟到其子类。接口
建立型模式抽象了实例化过程。他帮助咱们一个系统独立于如何建立、组合和表示它的那些对象。建立型模式都会将关于该系统使用哪些具体的类信息封装起来。容许客户用结构和功能差异很大的产品对象配置一个系统。配置能够是静态的,即在编译时指定,也能够是动态的就是在运行是指定。事务
一般设计应该是从工厂方法模式开始,当设计者发现须要更大的灵活性时,设计便会向其余建立型模式演化,当设计者在设计标准之间进行权衡的时候,了解多个建立型模式能够给设计者更多的选择余地。
2)抽象工厂模式:提供一个建立一系列相关或相互依赖的对象的接口,而无需指定他们的具体类。
建立型模式隐藏了这些类的实例是如何被建立和放在一块儿,整个系统关于这些对象所知道的是由抽象类所定义的接口。这样,建立型在建立了什么,谁建立了它,它是怎么被建立的,以及什么时候建立这些方面提供了很大的灵活性。
3)单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
让类自身来负责保存它惟一的实例。这个类能够保证没有其余实例能够被建立,而且咱们还提供了一个飞吻该实例的方法,这样使得对惟一的实例能够严格的控制客户怎样以及什么时候访问它。
4)建造者模式:将一个复杂对象的构建与它的表示分离,使得一样的构建过程能够建立不一样的表示;
内聚性描述的是一个例程内部组成部分之间相互联系的紧密程度。而耦合性描述的是一个例程与其余例程之间联系的紧密程度。软件开发的目标应该是建立这样的例程:内部完整,也是高内聚,而与其余例程之间联系则是小巧、直接、可见、灵活的,这就是松耦合。
而建造者则是一个复杂对象的构建与它表示分离,使用统一的构建过程建立不一样的产品对象给客户。
5)原型模式:用原型实例指定建立对象的种类,而且经过拷贝这些原型建立新的对象。
创建相应数目的的原型并克隆他们一般比每次用合适的状态手工实例化类更方便一些。
未完待续,后期整理结构型和行为型设计模式...............