目录标题
定义函数式接口 函数式接口实现类 工厂类封装 实际应用 总结
定义函数式接口
@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() 方法来获取销售信息。