目录标题 定义函数式接口 函数式接口实现类 工厂类封装 实际应用 总结
定义函数式接口
@FunctionalInterface
public interface ISellIPad < T > { T getSellIPadInfo ( ) ; }
函数式接口实现类
public class HuaWeiSellIPad implements ISellIPad < String > { @Override public String getSellIPadInfo ( ) { System . out. println ( "华为IPad:getSellIPadInfo" ) ; return "华为IPad" ; }
}
public class XiaomiSellIPad implements ISellIPad < String > { @Override public String getSellIPadInfo ( ) { System . out. println ( "小米IPad:getSellIPadInfo" ) ; return "小米IPad" ; }
}
工厂类封装
import java. util. HashMap ;
import java. util. Map ;
import java. util. function. Supplier ;
public class SellIPadFactory { final static Map < String , Supplier < ISellIPad > > map = new HashMap < > ( ) ; static { map. put ( "xiaomi" , XiaomiSellIPad :: new ) ; map. put ( "huawei" , HuaWeiSellIPad :: new ) ; } public static ISellIPad getInstance ( String ipadName) { Supplier < ISellIPad > iPadSupplier = map. get ( ipadName) ; if ( iPadSupplier != null ) { return iPadSupplier. get ( ) ; } throw new IllegalArgumentException ( "No Such ISellIPad " + ipadName) ; }
}
实际应用
public class PinDuoDuoShopV3 { public void order ( String pcName) { ISellIPad < String > sellIPad = SellIPadFactory . getInstance ( pcName) ; String getIpad = sellIPad. getSellIPadInfo ( ) ; System . out. println ( "PinDuoDuoShopV3=>order=>执行完毕=>" + getIpad) ; } }
总结
定义函数式接口(ISellIPad.java):这个接口被 ISellIPad 类型的对象实现,该接口定义了一个 getSellIPadInfo() 方法,用于获取销售 iPad 的信息。 函数式接口实现类:(HuaWeiSellIPad.java 和 XiaomiSellIPad.java):这些类分别实现了 ISellIPad 接口,提供了针对不同品牌 iPad 的销售信息。 工厂类封装(SellIPadFactory.java):这个类创建了一个 iPad 工厂,通过传入 iPad 的名称来获取相应的 ISellIPad 实例。它使用了 Java 8 中的 Supplier 函数式接口来提供实例化对象的方法。 实际应用(PinDuoDuoShopV3.java):这个类展示了如何使用工厂类来订购 iPad。通过调用 SellIPadFactory.getInstance(pcName) 来获取相应品牌的 iPad 实例,然后执行 getSellIPadInfo() 方法来获取销售信息。