在我们实例化对象的时候通常使用new方式来产生对象。这种方法很简单很方便,为什么还需要有专门的创建模式来实例化对象呢?
第一种情况,如果系统中有很多中类,需要实例化的时候,通过工厂方法,将相同或相似的类放到一个工厂或一类工厂中创建。代码清晰。
第二种情况,如果系统中有一个复杂的类,不能通过一个new方式实现,可以通过建造者模式或原型模式;来创建。
第三种情况,如果系统中要创建一个类仅有一个实例,可以通过单例模式来创建。
模式名称 | 说明 |
简单工厂模式 | 通过参数选择创建不通的对象 |
工厂方法模式 | 通过选择不通的工厂类创建对象 |
抽象工厂模式 | 通过选择不通的工厂类,创建一系列对象。 |
| |
| |
|
在创建一个系列对象的时候,系列对象并不能很容易都完全一致,有的系列对象可能会缺少一种或几种对象。这种情况就是没有严格遵循抽象工程模式。这需要我们在开发中自己灵活判断掌握。
三种不同的开发模式
1、自己开发,自己知道,自己规避错误。
2、多人开发,严格遵循。
3、多人开发,不严格遵循。可以通过NULL判断
是否缺少对象。
模式名称 | 说明 | 涉及对象的关系 | 使用设计原则 | 如何高内聚低耦合 |
简单工厂模式 | 一个工厂对象,通过不通方法创建不通对象 | 完全依赖,工厂方法和生成对象一体,没有分开 |
| 创建行为和被生成对象完全在一起没有分离 |
工程方法模式 | 多个工厂对象,通过一种方法创建多个对象 | 工厂和对象是单向关联关系 | 工厂接口使用依赖倒转原则; 被生成对象使用里氏代换原则; 通过工厂访问对象,使用迪米特法则 | 创建行为抽象成为独立接口。然后通过接口实现。 被生成对象抽象成一个父类,通过继承 |
抽象工厂模式 | 多个工厂对象,通过多种方法,创建系列对象 | 工厂和对象是单向多重数关联关系 | 同上,知识抽象度更高一些 | 同上,只是都变成系列对象 |