工厂模式
工厂的实现也和产品一样,在子类实现,更加灵活,扩展无需再修改工厂的代码,需要为新的产品创建新的工厂,符合开闭原则。
示例代码
package creationalpattern.factorypattern;
/**
* @author tx
* @version 1.0
* @date 2024/1/5 18:01
* @description:
* 工厂模式
* 避免了简单工厂每次增加新的产品就要去修改工厂类的缺点,
* 但多了每次多了新的产品,就需要创建新的工厂的缺点。
*/
public class FactoryPattern {
public static void main(String[] args) {
// 创建工厂
FFactory fFactoryA = new FFactoryA();
FFactory fFactoryB = new FFactoryB();
// 获取产品
FProduct fProductA = fFactoryA.create();
FProduct fProductB = fFactoryB.create();
// 查看产品
fProductA.run();
fProductB.run();
}
}
/**
* 产品抽象层
*/
interface FProduct{
/**
* 产品具备的功能
*/
void run();
}
/**
* 具体的产品 A
*/
class FProductA implements FProduct{
/**
* 产品具备的功能
*/
@Override
public void run() {
System.out.println("产品A的功能实现");
}
}
/**
* 具体的产品 B
*/
class FProductB implements FProduct{
/**
* 产品具备的功能
*/
@Override
public void run() {
System.out.println("产品B的功能实现");
}
}
/**
* 抽象层工厂
*/
interface FFactory{
FProduct create();
}
/**
* 工厂A,生产A产品
*/
class FFactoryA implements FFactory{
/**
* @return 产品A
*/
@Override
public FProduct create() {
return new FProductA();
}
}
/**
* 工厂B,生产B产品
*/
class FFactoryB implements FFactory{
/**
* @return 产品A
*/
@Override
public FProduct create() {
return new FProductB();
}
}