工廠模式
工廠模式(Factory Pattern)是 Java
中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,並且是通過使用一個共同的接口來指向新創建的對象。
介紹
- 定義一個創建對象的接口,讓其子類自己決定實例化哪一個工廠類,工廠模式使其創建過程延遲到子類進行。
- 主要解決接口選擇的問題
實現
- 1.創建一個接口
public interface FactoryTest {
void test();
}
- 2.創建實現接口的實體類。
public class ATest implements FactoryTest {
@Override
public void test() {
System.out.println("ATest");
}
}
public class BTest implements FactoryTest {
@Override
public void test() {
System.out.println("BTest");
}
}
public class CTest implements FactoryTest {
@Override
public void test() {
System.out.println("CTest");
}
}
- 3.創建一個工廠,生成基於給定信息的實體類的對象。
public class ChooseFactory {
//使用 getTest 方法獲取形狀類型的對象
public FactoryTest getTest(String test){
if(test == null){
return null;
}
if(test.equals("ATest")){
return new ATest();
} else if(test.equals("BTest")){
return new BTest();
} else if(test.equals("CTest")){
return new CTest();
}
return null;
}
}
- 4.使用該工廠,通過傳遞類型信息來獲取實體類的對象。
public class FactoryDemo {
public static void main(String[] args) {
ChooseFactory chooseFactory = new ChooseFactory();
//獲取 Factory 的對象,並調用它的 getTest 方法
FactoryTest testA = chooseFactory.getTest("ATest");
//調用 FactoryTest 的 test方法
testA.test();
//獲取 Factory 的對象,並調用它的 getTest 方法
FactoryTest testB = chooseFactory.getTest("BTest");
//調用 FactoryTest 的 test方法
testB.test();
//獲取 Factory 的對象,並調用它的 getTest 方法
FactoryTest testC = chooseFactory.getTest("CTest");
//調用 FactoryTest 的 test方法
testC.test();
}
}
- 5.打印結果
Connected to the target VM, address: '127.0.0.1:0', transport: 'socket'
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
ATest
BTest
CTest
Disconnected from the target VM, address: '127.0.0.1:0', transport: 'socket'