工厂模式
在一些情况下,new操作符直接生成对象会带来一些问题,通常是发生在生成对象过程比较繁琐的时候。如果直接在需要的时候直接写这个部分,那么类之间的耦合程度就比较高了。
该模式解决的问题:如何能够方便地创建一个实例,而不必关心创建实例中的细节和复杂过程,降低代码的耦合度。创建一个工厂去生产实例。
工厂模式分类:
1、 抽象工厂模式;2、工厂方法模式。
工厂方法模式:
一个抽象产品类,可以派生出各种具体的产品;
一个抽象的工厂,可以派生出各种具体的工厂;
每个具体工厂类只能创建一个具体产品类的实例。
产品类:
abstract class Product {
public Product (){
}
}
public class Product1 extends Product{
public Product1() {
System.out.println("Product1");
}
}
public class Product2 extends Product{
public Product2 (){
System.out.println("Product2");
}
}
工厂类:
interface Factory {
Product createProduct();
}
public class Factory1 implements Factory {
@Override
public Product1 createProduct () {
return new Product1();
}
}
public class Factory2 implements Factory {
@Override
public Product2 createBMW() {
return new Product2();
}
}
客户类:
public class Customer {
public static void main(String[] args) {
Factory1 factory1 = new Factory1();
Product1 product1 = factory1.createProduct();
Factory2 factory2 = new Factory2();
Product2 product2 = factory2.createProduct();
}
}