首页 > 代码库 > 设计模式之简单工厂模式

设计模式之简单工厂模式

  在谈设计模式之前,首先说一下面向对象编程,从活字印刷术的例子看面向对象的好处,面向对象必须:

1. 可维护:修改的话只需要修改某一个字;

2. 可复用:别的字可以重新拿来用;

3. 可扩展:如果要加字,只需要刻新字;

4. 灵活性好:横排竖排都可以。

  通过封装、继承、多态把程序的耦合度降低,传统印刷术的问题就在于把所有的字都刻在同一版面上造成耦合度太高所致,用设计模式是的程序更加的灵活,容易修改,并且易于复用。 

  在编写一个计算器程序时,可以将业务逻辑和显示分离,业务逻辑封装为一个类(封装);如果要新添加一种运算,可以先创建一个Operation的基类,然后各种运算从Operation类继承,并实现GetResult()虚函数,这时添加新的运算只需要派生一个新的类,即不需要之前的运算参与编译。

简单工厂模式

如何让计算器知道我是希望使用哪种运算呢?应该考虑单独的类来做这个创造实例的过程,这就是工厂。创建一个OperationFactory类,传入参数,函数createOperate就可以实例化出合适的对象。 

UML类图

抽象类用斜体表示;

前边的符号中“+”表示public, “-”表示private, “#”表示protected;

<<interface>>字样是接口名称;

继承关系用空心三角形加实线表示;

关联表示一个类‘知道’另一个类,可以用关联(association),如企鹅和气候,关联关系用实线箭头表示。

聚合(Aggregation)表示一种“弱拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。部分的生命周期可以超越整体,如电脑和鼠标。聚合关系用空心的另行加实线箭头表示。

组合(Composition)表示一种“强拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。如鸟和翅膀。组合关系用实心的菱形加实线箭头表示。

动物需要氧气、水和食物等,它们之间是依赖关系(Dependency),用虚线箭头来表示。

设计模式之简单工厂模式