您的位置:首页 > 健康 > 美食 > java设计模式(四)——抽象工厂模式

java设计模式(四)——抽象工厂模式

2025/5/8 20:11:47 来源:https://blog.csdn.net/print_out/article/details/140130530  浏览:    关键词:java设计模式(四)——抽象工厂模式

一、模式介绍

改善在工厂方法模式中,扩展时新增产品类、工厂类,导致项目中类巨多的场面,减少系统的维护成本,且一个工厂可以生成多种产品,而不是同一种的产品,比如一个工厂既可以生产鞋子又可以衣服,而不是只能生产鞋子。

二、工厂方法模式

1、实现步骤

第一步: 定义产品的抽象基类,如鞋子(Shoes.class),衣服(Clothe.class)
// 1、定义鞋 产品抽象基类
abstract class Shoes {// 展示logopublic abstract void showLogo();
}
// 1、定义衣服 产品抽象基类
abstract class Clothe {// 展示logopublic abstract void showLogo();
}
第二步:定义具体产品类,继承产品抽象基类,如飞跃牌鞋子(FeiYueShoes.class),飞跃牌衣服(FeiYueClothe.class),回力牌鞋子(HuiLiShoes.class),回力牌衣服(HuiLiClothe.class)
//2.定义具体品牌的鞋类,继承鞋抽象基类
public class FeiYueShoes extends Shoes {@Overridepublic void showLogo() {System.out.println("这是飞跃鞋");}
}
//2.定义具体品牌的衣服,继承鞋抽象基类
public class FeiYueClothe extends Clothe {@Overridepublic void showLogo() {System.out.println("这是飞跃衣服");}
}
//2.定义具体品牌的鞋类,继承鞋抽象基类
public class HuiLiShoes extends Shoes {@Overridepublic void showLogo() {System.out.println("这是回力鞋");}
}
//2.定义具体品牌的衣服,继承衣服抽象基类
public class HuiLiClothe extends Clothe {@Overridepublic void showLogo() {System.out.println("这是回力衣服");}
}
第三步:定义抽象工厂接口(AbstractFactory.class,说明工厂具体生产什么产品,鞋子,衣服,即抽象工厂生产抽象产品
//3 定义抽象工厂接口
interface AbstractFactory {// 生产鞋子Shoes produceShoes();// 生产衣服Clothe produceClothe();
}
第四步:定义生产具体产品的具体工厂类,实现抽象工厂类方法,如飞跃工厂(FeiYueFactory.class)、回力工厂(HuiLiFactory.class
// 4 定义生产飞跃产品的的具体工厂类
public class FeiYueFactory implements AbstractFactory {@Overridepublic Shoes produceShoes() {return new FeiYueShoes();}@Overridepublic Clothe produceClothe() {return new FeiYueClothe();}
}
// 4 定义生产回力产品的的具体工厂类
public class HuiLiFactory implements AbstractFactory {@Overridepublic Shoes produceShoes() {return new HuiLiShoes();}@Overridepublic Clothe produceClothe() {return new HuiLiClothe();}
}
第五步:调用抽象工厂方法(AbstractFactoryExample.class) (先实例化具体工厂类,然后调用方法生成具体产品(实例化具体产品类),最后调用产品方法、属性)
// 5 调用抽象工厂方法
public class AbstractFactoryExample {public static void main(String[] args) {//飞跃工厂FeiYueFactory feiYueFactory = new FeiYueFactory();// 生产飞跃鞋子feiYueFactory.produceShoes().showLogo();// 生产飞跃衣服feiYueFactory.produceClothe().showLogo();//回力工厂HuiLiFactory huiLiFactory = new HuiLiFactory();// 生产回力鞋子huiLiFactory.produceShoes().showLogo();// 生产回力衣服huiLiFactory.produceClothe().showLogo();}
}

2、总结

 理解抽象工厂模式的核心关键在于理解品牌家族的概念,简单工厂方法与工厂方法创建工厂的着眼于某类具体的产品,某个工厂与某个产品对应,而抽象工厂这是某个工厂与家族的产品对应,这个工厂可以生产这个品牌家族的一系列产品。如果新增品牌。则定义具体产品类,定义具体工厂类,然后调用抽象工厂方法即可。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com