# gupaoedu-vip-pattern-factory **Repository Path**: lichaoying/gupaoedu-vip-pattern-factory ## Basic Information - **Project Name**: gupaoedu-vip-pattern-factory - **Description**: java_架构师_设计模式_工厂模式 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-01-08 - **Last Updated**: 2022-01-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # java架构师-设计模式-工厂模式 --- ## 工厂模式:***只对结果负责,封装创建过程*** spring 可参考 BeanFactory,Calender --- ### 简单工厂模式 1. 工厂会有一个create创建方法,这个方法是静态的,所以也叫静态工厂。 2. 简单工厂模式不属于23种常用设计模式。 3. 需要通过参数进行控制来创建不同的对象。 4. 扩展性差。 5. 不同产品需要不同的参数时不支持。 > 优点: 只需传入一个正确的参数,就可以获取你所需要的对象无须知道其创建的细节。 > > 缺点:工厂类的职责相对过重,增加新的产品时需要修改工厂类的判断逻辑,违背开闭原则。每次扩展都需要修改factory --- ### 工厂方法模式 1. 23种常用设计模式之一。 2. 具体的产品由具体的工厂进行生产,工厂的职责更明确清晰。 3. 可一定程度上解耦,产品的生产与实现类进行分开,只依赖产品接口。 4. 消费者完全不知道产品的实现过程也不需要知道产品的实现过程。 5. 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到了子类。 > 优点:用户只需要关心所需产品所需对应的工厂,无效关心创建细节 > 缺点:类的个数容易过多,增加了代码结构的复杂度 --- ### 抽象工厂模式 1. 23种常用设计模式之一。 2. 一个抽象工厂类派生出多个不出的产品工厂。 3. 提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 4. 分工更明确,职责更清晰。 > 优点:具体产品在应用层代码隔离,无须关心创建细节,将一个系列的产品族统一到一起创 > 缺点:规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口,增加了系统的抽象性和理解难 --- ## 总结 简单工厂:不能算是真正意义上的设计模式,但可以将客户程序从具体类解耦。 工厂方法:使用继承,把对象的创建委托给子类,由子类来实现创建方法,可以看作是抽象工厂模式中只有单一产品的情况。 抽象工厂:使对象的创建被实现在工厂接口所暴露出来的方法中。 工厂模式可以帮助我们针对抽象/接口编程,而不是针对具体类编程,在不同的场景下按具体情况来使用。