设计模式在我看来集成了软件设计者众人的智慧。我们想要利用前人智慧设计软件,而不是自己从头开始摸索,那么我们就需要站在巨人的肩膀上。设计模式便是巨人的肩膀。
最近开始啃GOF这些设计模式,希望通过在blog上的梳理加深自己的印象。
简单工厂模式(simple factory)里的工厂其实是超级工厂。所有的创建任务都由一个工厂来做那岂不是很超级?简单工厂模式的世界里只有一个工厂,那自然所有的东西都要由这个工厂来创建,自然广大人民(client)也知道只要是商品(product)自然就是这个工厂生产的。这样看来这个世界确实简单。
下面有一个很生动的例子,正是一个典型的简单工厂模式的例子。这里早餐营业员便是一个工厂(factory),各种早餐(product)都由这一家生产。顾客(client)要购买早餐,只需要与工厂交易便好了,当然顾客肯定知道自己想要吃什么样的早餐。其实简单工厂模式已经出来了。
简单工厂模式的核心就是工厂,它需要根据client提供的信息判断要创建哪种商品(product)。client现在只需要负责消费便好,只要负责表现便好,具体行为由工厂负责。这就是简单工厂模式的精髓。
不过超级工厂的存在实际上是违反OOP原则的,一个超级类的出现对于维护和扩展是一种灾难,也不符合GRASPR(通用责任分配软件模式)里高内聚的原则——它要求类的功能要明确单一。
另外,不得不说的是《大话设计模式》里的开篇,一个计算器的例子也是极为不错的例子。层层深入的剖析,很让人受用。