aspnet网站开发教程数据库,手机中国网官网,网站搭建外贸,常用的html编辑器有哪些继续前言#xff0c;工厂模式中抽象工厂模式的讲解#xff1a;
1. 前面的工厂模式有啥问题#xff1f;
前面的工厂模式有这么个问题#xff1a;一个产品就给了一个工厂#xff0c;这样子如果产品变多#xff0c;系统就会很复杂#xff1a; 2. 解决方法
我们可以按照手…继续前言工厂模式中抽象工厂模式的讲解
1. 前面的工厂模式有啥问题
前面的工厂模式有这么个问题一个产品就给了一个工厂这样子如果产品变多系统就会很复杂 2. 解决方法
我们可以按照手机、电脑这两种分类来定义抽象出工厂这样子避免了工厂子类越来越多、系统越来越复杂的问题像这样把产品类按照一定的规则进行分组组内不同产品对应于同一工厂类不同方法的设计模式就是抽象工厂模式( Abstract Factory Pattern ) 3. 代码设计
按照上述逻辑我们就以手机为例设计一下代码
/*** Author: stukk* Description: 苹果的产品接口* DateTime: 2023-12-15 12:03**/
public interface IphoneProduct {void showIphone();
}/*** Author: stukk* Description: 苹果手机* DateTime: 2023-12-15 12:07**/
public class Iphone implements IphoneProduct {Overridepublic void showIphone() {System.out.println(我是苹果手机);}
}/*** Author: stukk* Description: 苹果电脑* DateTime: 2023-12-15 12:07**/
public class Mac implements IphoneProduct {Overridepublic void showIphone() {System.out.println(我是苹果电脑);}
}/*** Author: stukk* Description: 小米的产品接口* DateTime: 2023-12-15 12:03**/
public interface MiProduct {void showMi();
}/*** Author: stukk* Description: 小米手机产品* DateTime: 2023-12-15 12:04**/
public class MiPhone implements MiProduct {Overridepublic void showMi() {System.out.println(我是小米手机....);}
}/*** Author: stukk* Description: 小米电脑产品* DateTime: 2023-12-15 12:04**/
public class MiComputer implements MiProduct {Overridepublic void showMi() {System.out.println(我是小米电脑....);}
}/*** Author: stukk* Description: 工厂接口* DateTime: 2023-12-15 12:09**/
public interface Factory {
// 创建苹果的产品IphoneProduct createIphone();
// 创建小米的产品MiProduct createMi();}* Author: stukk* Description: 电脑工厂具体类* DateTime: 2023-12-15 12:10**/
public class ComputerFactory implements Factory {Overridepublic IphoneProduct createIphone() {return new Mac();}Overridepublic MiProduct createMi() {return new MiComputer();}
}/*** Author: stukk* Description: 手机工厂具体类* DateTime: 2023-12-15 12:10**/
public class PhoneFactory implements Factory {Overridepublic IphoneProduct createIphone() {return new Iphone();}Overridepublic MiProduct createMi() {return new MiPhone();}
}/*** Author: stukk* Description: 客户端* DateTime: 2023-12-15 12:12**/
public class abstractFactoryExample {public static void main(String[] args) {
// 创建手机Factory factory new PhoneFactory();IphoneProduct iphone factory.createIphone();MiProduct mi factory.createMi();iphone.showIphone();mi.showMi();
// 创建电脑factory new ComputerFactory();IphoneProduct mac factory.createIphone();MiProduct miComputer factory.createMi();mac.showIphone();miComputer.showMi();}}
4. 工厂模式的实际应用
工厂模式在实际开发中也有很多的应用场景 依赖注入Dependency Injection工厂模式用于实现依赖注入通过工厂类来创建和提供依赖的对象。这样可以实现松耦合的组件之间的依赖关系方便进行单元测试和代码维护。 多态对象的创建工厂模式可以根据条件或参数的不同创建不同的具体对象实现多态的对象创建。这样可以根据具体需求动态地创建不同类型的对象提供更大的灵活性和可扩展性。 插件系统工厂模式可以用于实现插件系统通过工厂类动态地加载和创建插件对象。这样可以方便地扩展应用的功能允许用户根据需求选择和切换不同的插件实现。 数据库访问工厂模式可以用于创建数据库访问对象根据不同的数据库类型创建相应的数据库连接、查询执行器等对象。这样可以实现数据库访问的抽象和统一管理提供更好的可维护性和扩展性。 5.总结
普通工厂模式 普通工厂模式定义了唯一工厂类通过用户传入的type参数使用if-else来生成返回对应来创建对象。
工厂方法模式 工厂方法模式定义了给每个产品都定义了工厂类用户可以直接调用对应的工厂类中的方法来创建对象换句话说就是使用多态来解决这个if-else过多的问题
抽象工厂模式 抽象工厂模式把产品子类进行分组同组中的不同产品由同一个工厂子类的不同方法负责创建从而减少了工厂子类的数量。