当前位置: 首页 > 后端技术 > Java

Java中的抽象工厂模式

时间:2023-04-01 20:04:01 Java

抽象工厂模式简介该模式是一种创建型模式,它提供了创建对象的最佳方式。抽象工厂模式(AbstractFactoryPattern)就是围绕一个超级工厂创建其他工厂。超级工厂也被称为其他工厂的工厂。在抽象工厂模式中,接口是负责创建相关对象而不明确指定其类的工厂。每个生成的工厂都可以根据工厂模式提供对象。InterfaceIComputerProduct//计算机产品接口publicinterfaceIComputerProduct{voidstart();voidshutdown();}subclassAComputerandBComputer//AcomputerpublicclassAComputerimplementsIComputerProduct{@Overridepublicvoidstart(){System.out.println("打开计算机A");}@Overridepublicvoidshutdown(){System.out.println("关闭计算机A");}}//ComputerBpublicclassBComputerimplementsIComputerProduct{@Overridepublicvoidstart(){System.out.println("TurnoncomputerB");}@Overridepublicvoidshutdown(){System.out.println("关闭计算机B");}}InterfaceITVProduct//电视产品接口publicinterfaceITVProduct{voidstart();voidshutdown();}SubclassesATVandBTV//ATVpublicclassATVimplementsITVProduct{@Overridepublicvoidstart(){System.out.println("TurnonATV");}@Overridepublicvoidshutdown(){System.out.println("关掉电视");}}//BTVpublicclassBTVimplementsITVProduct{@Overridepublicvoidstart(){System.out.println("打开电视B");}@Overridepublicvoidshutdown(){System.out.println("关闭电视B");}}InterfaceIProductFactory//抽象产品工厂publicinterfaceIProductFactory{//生产计算机IComputerProductiComputerProduct();//制作电视ITVProductitvProduct();}子类AFactory和BFactory}@OverridepublicITVProduct)itvtur(ATV();}}publicclassBFactoryimplementsIProductFactory{@OverridepublicIComputerProductiComputerProduct(){returnnewBComputer();}@OverridepublicITVProductitvProduct(){returnnewBTV();}复制代码}TestclasspublicclassTest{publicstaticvoidmain(String[]args){AFactoryaFactory=newAFactory();//工厂IComputerProductiComputerProduct=aFactory.iComputerProduct();//工厂电脑产品iComputerProduct.start();iComputerProduct.shutdown();ITVProductitvProduct=aFactory.itvProduct();//工厂电视产品itvProduct.start();itvProduct.shutdown();BFactorybFactory=newBFactory();//B厂iComputerProduct=bFactory.iComputerProduct();//B厂电脑产品iComputerProduct.start();iComputerProduct.shutdown();itvProduct=bFactory.itvProduct();//B厂电视产品itvProduct.start();itvProduct.shutdown();/***输出结果:*打开电脑A*关闭电脑A*打开电视A*关闭电视A*打开电脑B*关闭电脑B*打开电视B*关闭电视B*/}}测试结果开电脑A关电脑A开A电视关A电视开B电脑关B电脑开B电视关B电视