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