一、什么是设计模式?
设计模式是从很多优秀的软件系统中总结出成功的可复用的设计方案。每个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就一次一次的使用该方案而不必做重复的劳动。
二、学习设计模式的重要性
一个好的设计系统往往是易于维护,易扩展、易复用的,有过一定代码编写量的程序开发人员,可能会逐渐思考程序设计问题,想知道一些优秀的设计者或团队是怎样设计出一个好的软件系统。设计模式的目的不是针对软件设计和开发中的每个问题都给出解决方案,而是针对某种特定环境中通常都会遇到的某种软件开发问题给出可重用的一些解决方案,因此学习设计模式不仅可以使我们用好这些成功的模式,更重要的是可以使我们更加深刻的理解面向对象的设计思想,非常有利于我们更好的使用面向对象语言解决设计中的问题。
三、面向对象设计的几个基本原则
说到面向对象设计的几项原则,首先我们来了解面向对象的程序设计的优点和特性:
优点:
(1)代码开发模块化,更易于维护和修改;
(2)代码复用;
(3)增强代码的可靠性和灵活性;
(4)增加代码的可理解性;
特性:
(1)封装:为类中一些隐藏属性的提供行为的能力;
(2)抽象:定义与实现相分离;
(3)多态:相同的函数在不同情境中实现的状况不同;
个人认为设计模式的出现就是为了更好的巩固上述的优点和特性。
面向对象的基本原则:(solid立方体)
(1)单一职责原则(singe-Resposibility principle):一个类最好只做好一件事,单一职责原则可以看做是低耦合,高内聚在面向对象原则上的引申。
(2)开放封闭原则(Open-Closed principle):软件实体应该是可扩展的,而不是可修改的,也就是说,对扩展是开放的,对修改是封闭的。
(3)Liskov替换原则(Liskov-Substitution principle):子类必须能够替换其基类,这一思想体现了对继承机制的约束规范。
(4)接口隔离原则(Interface-Segregation principle):使用多个小的专门的接口,而不要去使用一个大的总的接口,还是要降低耦合度。
(5)依赖倒置言责(Dependecy-Inversion principle):依赖于抽象。具体而言就是高层模块不依赖于底层的模块,二者都同依赖于抽象;抽象不依赖与具体,具体不依赖于抽象。
总体思想就是:面向抽象的原则、多用组合少用继承原则、高内聚-低耦合原则。
四、模式分类
1、创建型模式:工厂方法模式、抽象工厂模式、生成器模式、原型模式、单例模式。
2、行为型模式:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。
3、结构模式:适配器模式、组合模式、代理模式、享元模式、外观模式、桥接模式、装饰模式。