設(shè)計(jì)模式之簡(jiǎn)單工廠(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("測(cè)試");
// System.out.println(product);
Product2 product2 = new Product2("測(cè)試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í)例中已旧,是面向一個(gè)類(lèi)來(lái)編程的嫂便,new 來(lái)創(chuàng)建類(lèi)的實(shí)例念赶,調(diào)用其方法和參數(shù)。
如果Product的類(lèi)名進(jìn)行了變更怖竭,其內(nèi)部的構(gòu)造也會(huì)變更剩晴,那么調(diào)用該實(shí)例的地方都要做變更修改,有100個(gè)調(diào)用就要修改100個(gè)地方侵状,修改所有的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)變了趣兄,只需要修改一個(gè)地方绽左,ProductFactory 中 new 的對(duì)象。其他調(diào)用的地方不需要修改艇潭。
工廠模式在spring中最常見(jiàn)拼窥。