工厂模式
简单来说是一种创建型设计模式,它提供了一种创建对象的最佳实践,这种模式提供了一种抽象工厂,通过使用工厂方法来创建对象。工厂方法将对象的创建推迟到子类中,这样就可以实现对象的创建和使用解耦。
一、概念
工厂模式是一种对象创建型模式,它提供了一种创建对象的最佳实践。在工厂模式中,我们在创建对象时不使用new关键字,而是通过调用工厂方法来创建对象。工厂方法是一种在子类中定义的方法,该方法负责实例化对象。工厂方法可以返回不同的对象类型,因此工厂方法可以创建一组相关或不相关的对象。这样就可以将对象的创建和使用解耦。
二、实现
Java工厂模式的实现包括三种类型:简单工厂模式、工厂方法模式和抽象工厂模式。
简单工厂模式是最基本的工厂模式,它通过一个工厂类来创建所有需要的对象。简单工厂模式将对象的创建逻辑封装在一个工厂类中,客户端通过调用工厂类的静态方法来创建对象。简单工厂模式有一个缺点,就是它违背了开闭原则,当需要添加新的对象时,需要修改工厂类的代码。
三、优点
Java工厂模式的优点包括:
-
可以将对象的创建和使用解耦,从而提高系统的灵活性和可维护性。
-
工厂模式可以隐藏对象的创建细节,使客户端只关心对象的使用,从而降低系统的复杂度。
-
工厂模式可以通过扩展工厂类或增加新的工厂类来添加新的产品,从而提高系统的扩展性和可维护性。
四、缺点
Java工厂模式的缺点包括:
-
工厂模式会增加系统的类和对象的个数,从而增加系统的复杂度。
-
工厂模式需要额外的工作量来创建和维护工厂类和产品类,从而增加系统的开发成本。
-
工厂模式可能会降低系统的性能,因为客户端需要通过调用工厂方法来创建对象,从而增加了系统的开销。
五、总结
Java工厂模式是一种常用的设计模式,它可以将对象的创建和使用解耦,从而提高系统的灵活性和可维护性。Java工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式三种形式,每种形式都有其特定的应用场景和优缺点。在实际开发中,我们需要根据具体的需求来选择合适的工厂模式。
原型模式
一、概念:
原型模式是一种创建型设计模式,其核心思想是通过复制现有对象来创建新对象,而不是通过实例化类来创建对象。原型模式基于原型实例创建对象的过程,可以简化对象的创建过程,提高性能,并且可以避免直接使用构造函数进行对象的创建。
二、实现:
原型模式的克隆分为浅克隆和深克隆。
- 浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址
- 深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。
在实现原型模式时,首先需要定义一个抽象原型类,其中包含一个抽象方法用于复制对象。然后具体的原型类继承抽象原型类,实现复制方法,并且能够通过复制方法创建新的对象。
三、优点:
1. 减少对象的创建时间:通过复制现有对象来创建新对象,可以减少对象的创建时间,提高性能。
2. 简化对象的创建过程:原型模式可以避免直接使用构造函数进行对象的创建,简化了对象的创建过程。
3. 可以动态添加或删除对象:通过原型模式创建对象,可以动态添加或删除原型对象,而不影响其他对象。
四、缺点:
1. 对象的深复制:在实现原型模式时,需要考虑对象的深复制问题,确保复制的对象与原对象完全独立,避免对象之间的影响。
2. 需要实现Cloneable接口:在Java中,实现原型模式需要实现Cloneable接口,并且重写clone()方法,这增加了代码的复杂性。
五、总结:
原型模式的基本工作原理是通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象复制原型自己来实现创建过程。
补充:
耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。模块间的耦合度是指模块之间的依赖关系,包括控制、调用、数据传递等。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。
简单来说耦合越高,可以调用的能力就降低了。