设计模式解析(总序)
设计模式之于面向对象系统的设计和开发的作用就有如数据结构之于面向过程开发的作用一般.
面向对象系统的分析和设计实际上追求的就是两点,一是高内聚(Cohesion),而是低耦合(Coupling)。这也是我们软件设计所准求的,因此无论是OO中的封装、继承、多态,还是我们的设计模式的原则和实例都是在为了这两个目标努力着、贡献着。
设计模式并不是空的理论,并不是脱离实际的教条。就如我们在进行软件开发的过程会很自然用到很多的算法和结构来解决实际的问题,那些其实也就是数据结构中的重要概念和内容。在面向对象系统的设计和开发中,我们已经积累了很多的原则,比如面向对象中的封装、继承和多态、面向接口编程、优先使用组合而不是继承、将抽象和实现分离的思想等等,在设计模式中你总是能看到他们的影子,特别是组合(委托)和继承的差异带来系统在耦合性上的差别,更是在设计模式多次涉及到。而一些设计模式的思想在我们做系统的设计和开发中则是经常要用到的,比如说Template、Strategy模式的思想,Singleton模式的思想,Factory模式的思想等等,还有很多的模式已经在我们的开发平台中扎根了,比如说Observer(其实例为Model-Control-View模式)是MFC和Struts中的基本框架,Iterator模式则在C++的STL中有实现等。或许有的人会说,我们不需要设计模式,我们的系统很小,设计模式会束缚我们的实现。我想说的是,设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想融入到了你的思想中后,你就会不自觉地使用这种思想去进行你的设计和开发,这一切才是最重要的。
23种设计模式如下
1 创建型模式..................................................................................................................................
1.1 Factory模式........................................................................................................................
1.2 AbstactFactory模式..........................................................................................................
1.3 Singleton模式...................................................................................................................
1.4 Builder模式.......................................................................................................................
1.5 Prototype模式...................................................................................................................
2 结构型模式................................................................................................................................
2.1 Bridge模式........................................................................................................................
2.2 Adapter模式......................................................................................................................
2.3 Decorator模式...................................................................................................................
2.4 Composite模式.................................................................................................................
2.5 Flyweight模式..................................................................................................................
2.6 Facade模式.......................................................................................................................
2.7 Proxy模式.........................................................................................................................
3 行为模式....................................................................................................................................
3.1 Template模式....................................................................................................................
3.2 Strategy模式.....................................................................................................................
3.3 State模式...........................................................................................................................
3.4 Observer模式....................................................................................................................
3.5 Memento模式...................................................................................................................
3.6 Mediator模式....................................................................................................................
3.7 Command模式..................................................................................................................
3.8 Visitor模式........................................................................................................................
3.9 Chain of Responsibility模式.............................................................................................
3.10 Iterator模式.....................................................................................................................
3.11 Interpreter模式..............................................................................................................
面向对象系统的分析和设计实际上追求的就是两点,一是高内聚(Cohesion),而是低耦合(Coupling)。这也是我们软件设计所准求的,因此无论是OO中的封装、继承、多态,还是我们的设计模式的原则和实例都是在为了这两个目标努力着、贡献着。
设计模式并不是空的理论,并不是脱离实际的教条。就如我们在进行软件开发的过程会很自然用到很多的算法和结构来解决实际的问题,那些其实也就是数据结构中的重要概念和内容。在面向对象系统的设计和开发中,我们已经积累了很多的原则,比如面向对象中的封装、继承和多态、面向接口编程、优先使用组合而不是继承、将抽象和实现分离的思想等等,在设计模式中你总是能看到他们的影子,特别是组合(委托)和继承的差异带来系统在耦合性上的差别,更是在设计模式多次涉及到。而一些设计模式的思想在我们做系统的设计和开发中则是经常要用到的,比如说Template、Strategy模式的思想,Singleton模式的思想,Factory模式的思想等等,还有很多的模式已经在我们的开发平台中扎根了,比如说Observer(其实例为Model-Control-View模式)是MFC和Struts中的基本框架,Iterator模式则在C++的STL中有实现等。或许有的人会说,我们不需要设计模式,我们的系统很小,设计模式会束缚我们的实现。我想说的是,设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想融入到了你的思想中后,你就会不自觉地使用这种思想去进行你的设计和开发,这一切才是最重要的。
23种设计模式如下
1 创建型模式..................................................................................................................................
1.1 Factory模式........................................................................................................................
1.2 AbstactFactory模式..........................................................................................................
1.3 Singleton模式...................................................................................................................
1.4 Builder模式.......................................................................................................................
1.5 Prototype模式...................................................................................................................
2 结构型模式................................................................................................................................
2.1 Bridge模式........................................................................................................................
2.2 Adapter模式......................................................................................................................
2.3 Decorator模式...................................................................................................................
2.4 Composite模式.................................................................................................................
2.5 Flyweight模式..................................................................................................................
2.6 Facade模式.......................................................................................................................
2.7 Proxy模式.........................................................................................................................
3 行为模式....................................................................................................................................
3.1 Template模式....................................................................................................................
3.2 Strategy模式.....................................................................................................................
3.3 State模式...........................................................................................................................
3.4 Observer模式....................................................................................................................
3.5 Memento模式...................................................................................................................
3.6 Mediator模式....................................................................................................................
3.7 Command模式..................................................................................................................
3.8 Visitor模式........................................................................................................................
3.9 Chain of Responsibility模式.............................................................................................
3.10 Iterator模式.....................................................................................................................
3.11 Interpreter模式..............................................................................................................