设计模式之工厂方法模式(创建型)

工厂方法模式是一种设计模式,它将对象的创建过程延迟到子类中,实现了抽象工厂和具体产品间的解耦。在代码示例中,`IFactory`接口定义了创建产品的方法,而`FactoryA`和`FactoryB`子类分别创建`ProductA`和`ProductB`对象。此模式的优点包括降低耦合、遵循单一职责原则和易于扩展。常见应用场景包括不确定产品类型、客户端不依赖产品实现细节以及资源复用等场景。
摘要由CSDN通过智能技术生成

定义:

定义一个创建对象的接口,但由实现这个接口的类来决定实例化哪个类,工厂方法把类的实例化推迟到子类中进行。

工厂方法模式,又称工厂模式,也叫多态工厂模式。

在工厂方法模式中,不再由单一的工厂类生产产品,而是由工厂类的子类实现具体产品的创建。

工厂方法模式UML类图:

 

代码如下:

public class Client {

    public static void main(String[] args) {

        IFactory factoryA = new FactoryA();
        factoryA.createProduct().sayName();
        IFactory factoryB = new FactoryB();
        factoryB.createProduct().sayName();
    }
}

interface IProduct {
    void sayName();
}

class ProductA implements IProduct {
    @Override
    public void sayName() { System.out.println("i am apple"); }
}

class ProductB implements IProduct {
    @Override
    public void sayName() { System.out.println("i am banana"); }
}

interface IFactory {
    IProduct createProduct();
}

class FactoryA implements IFactory {
    @Override
    public IProduct createProduct() { return new ProductA(); }
}

class FactoryB implements IFactory {
    @Override
    public IProduct createProduct() { return new ProductB(); }
}

 

优点:

可以避免创建者和具体产品之间的紧密耦合。
 单一责任原则。可以将产品创建代码移动到程序中的一个位置,使代码更易于支持。
 开/关原则。可以在不破坏现有客户端代码的情况下将新类型的产品引入程序中。

缺点:

 由于需要引入许多新的子类来实现该模式,因此代码可能会变得更加复杂。最好的情况是当将模式引入到创建者类的现有层次结构中时。

应用场景:

事先不知道代码应该使用的对象的确切类型和依赖关系。
客户端(应用层)不依赖产品类实例如何被创建、实现等细节。
通过重用现有对象而不是每次都重新构建它们来节省系统资源时,使用工厂方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值