設(shè)計(jì)模式之簡單工廠(factory)模式
1.不使用設(shè)計(jì)模式
package com.lucky.pattern.factory;
/**
* @author: LIJY
* @Description: 不使用設(shè)計(jì)模式
* @Date: 2021/10/2 22:47
*/
public class WithoutFactoryPatternDemo {
public static void main(String[] args) {
// Product product = new Product("測試");
// System.out.println(product);
Product2 product2 = new Product2("測試2");
System.out.println(product2);
}
// public static class Product {
// private String name;
//
// public Product(String name) {
// this.name = name;
// }
//
// public String getName() {
// return name;
// }
//
// public void setName(String name) {
// this.name = name;
// }
//
// @Override
// public String toString() {
// return "Product{" +
// "name='" + name + '\'' +
// '}';
// }
// }
public static class Product2 {
private String name;
public Product2(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Product{" +
"name='" + name + '\'' +
'}';
}
}
}
缺點(diǎn):
上述實(shí)例中,是面向一個類來編程的,new 來創(chuàng)建類的實(shí)例,調(diào)用其方法和參數(shù)。
如果Product的類名進(jìn)行了變更,其內(nèi)部的構(gòu)造也會變更,那么調(diào)用該實(shí)例的地方都要做變更修改,有100個調(diào)用就要修改100個地方,修改所有的new Product()的地方,代碼可維護(hù)性和可擴(kuò)展性極差。
2. 使用設(shè)計(jì)模式
package com.lucky.pattern.factory;
/**
* @author: LIJY
* @Description: 使用設(shè)計(jì)模式
* @Date: 2021/10/2 22:56
*/
public class FactoryPatternDemo {
public static void main(String[] args) {
Product product = ProductFactory.create();
product.execute();
}
public interface Product{
void execute();
}
public static class ProductImpl1 implements Product {
public void execute() {
System.out.println("產(chǎn)品1的功能實(shí)現(xiàn)");
}
}
public static class ProductImpl2 implements Product {
public void execute() {
System.out.println("產(chǎn)品2的功能實(shí)現(xiàn)");
}
}
public static class ProductFactory {
public static Product create() {
// return new ProductImpl1();
return new ProductImpl2();
}
}
}
優(yōu)點(diǎn):
Product的實(shí)現(xiàn)變了,只需要修改一個地方,ProductFactory 中 new 的對象。其他調(diào)用的地方不需要修改。
工廠模式在spring中最常見。