定义:
应用场景:
优点:
缺点:
/**
* 接口中修饰符:
* Java 7 方法只能为抽象方法,默认为 public abstract
* Java 8 增加:默认方法default;静态方法static(默认方法不强制重写,静态方法不会被实现类继承)
* Java 9 增加:私有方法
*
* 接口中不可以定义变量即只能定义常量,属性默认是public static final,且必须赋值
*/
// 1.------------ 超级工厂,定义产品族 ------------
public interface IProductFactory {
//生产手机
IPhoneProduct phoneProduct();
//生产路由器
IRouterProduct routerProduct();
}
// 2.------------ 产品接口,定义产品功能 ------------
//手机产品接口
public interface IPhoneProduct {
void open(); //开机
void callup(); //打电话
}
//路由器产品接口
public interface IRouterProduct {
void open(); //开机
void openWifi(); //打开WiFi
}
// 3.------------ 具体产品,实现产品接口 ------------
//小米手机
public class XiaomiPhone implements IPhoneProduct {
@Override
public void open() {
System.out.println("小米手机:开机");
}
@Override
public void callup() {
System.out.println("小米手机:打电话");
}
}
//小米路由器
public class XiaomiRouter implements IRouterProduct {
@Override
public void open() {
System.out.println("小米路由器:开机");
}
@Override
public void openWifi() {
System.out.println("小米路由器:打开WiFi");
}
}
//华为手机
public class HuaweiPhone implements IPhoneProduct {
@Override
public void open() {
System.out.println("华为手机:开机");
}
@Override
public void callup() {
System.out.println("华为手机:打电话");
}
}
//华为路由器
public class HuaweiRouter implements IRouterProduct {
@Override
public void open() {
System.out.println("华为路由器:开机");
}
@Override
public void openWifi() {
System.out.println("华为路由器:打开WiFi");
}
}
// 4.------------ 超级工厂实现类,生产具体产品 ------------
//小米工厂,生产小米手机、路由器
public class XiaomiFactory implements IProductFactory{
@Override
public IPhoneProduct phoneProduct() {
return new XiaomiPhone();
}
@Override
public IRouterProduct routerProduct() {
return new XiaomiRouter();
}
}
//华为工厂,生产华为手机、路由器
public class HuaweiFactory implements IProductFactory{
@Override
public IPhoneProduct phoneProduct() {
return new HuaweiPhone();
}
@Override
public IRouterProduct routerProduct() {
return new HuaweiRouter();
}
}
// 5.------------ 消费者,实现具体消费 ------------
public class Consumer {
public static void main(String[] args) {
System.out.println("------------小米产品---------------");
XiaomiFactory xiaomiFactory = new XiaomiFactory(); //小米工厂
IPhoneProduct xiaomiPhone = xiaomiFactory.phoneProduct(); //生产小米手机
IRouterProduct xiaomiRouter = xiaomiFactory.routerProduct();//生产小米路由器
System.out.println("------------华为产品---------------");
HuaweiFactory huaweiFactory = new HuaweiFactory(); //华为工厂
IPhoneProduct huaweiPhone = huaweiFactory.phoneProduct(); //华为手机
IRouterProduct huaweiRouter = huaweiFactory.routerProduct();//华为路由器
}
}
评论
登录后才可以进行评论哦!