设计模式4——抽象工厂模式
代码:
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName IphoneProduct
* @Date 2020/8/26 14:48
* @Author gaohengli
* @Version 1.0
*/
//抽象工厂模式
//手机产品接口
public interface IphoneProduct {
void start();
void shutdown();
void callup();
void sendSMS();
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName IRouterProduct
* @Date 2020/8/26 16:08
* @Author gaohengli
* @Version 1.0
*/
//路由产品接口
public interface IRouterProduct {
void start();
void shutdown();
void openwife();
void setting();
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName XiaomiPhone
* @Date 2020/8/26 16:11
* @Author gaohengli
* @Version 1.0
*/
//小米手机
public class XiaomiPhone implements IphoneProduct{
@Override
public void start() {
System.out.println("开启小米手机");
}
@Override
public void shutdown() {
System.out.println("关闭小米手机");
}
@Override
public void callup() {
System.out.println("小米打电话");
}
@Override
public void sendSMS() {
System.out.println("小米发短信");
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName XiaomiRouter
* @Date 2020/8/26 16:15
* @Author gaohengli
* @Version 1.0
*/
//小米路由器
public class XiaomiRouter implements IRouterProduct {
@Override
public void start() {
System.out.println("启动小米路由器");
}
@Override
public void shutdown() {
System.out.println("关闭小米路由器");
}
@Override
public void openwife() {
System.out.println("打开小米wifi");
}
@Override
public void setting() {
System.out.println("小米设置");
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName HuaweiPhone
* @Date 2020/8/26 16:13
* @Author gaohengli
* @Version 1.0
*/
//华为手机
public class HuaweiPhone implements IphoneProduct {
@Override
public void start() {
System.out.println("开启华为手机");
}
@Override
public void shutdown() {
System.out.println("关闭华为手机");
}
@Override
public void callup() {
System.out.println("华为打电话");
}
@Override
public void sendSMS() {
System.out.println("华为发短信");
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName HuaweiRouter
* @Date 2020/8/26 16:16
* @Author gaohengli
* @Version 1.0
*/
//华为路由器
public class HuaweiRouter implements IRouterProduct{
@Override
public void start() {
System.out.println("启动华为路由器");
}
@Override
public void shutdown() {
System.out.println("关闭华为路由器");
}
@Override
public void openwife() {
System.out.println("打开华为wifi");
}
@Override
public void setting() {
System.out.println("华为设置");
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName IProductFactory
* @Date 2020/8/26 16:20
* @Author gaohengli
* @Version 1.0
*/
//抽象产品工厂
public interface IProductFactory {
//生产手机
IphoneProduct iphoneProduct();
//生产路由器
IRouterProduct iRouterProduct();
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName HuaweiFactory
* @Date 2020/8/26 16:25
* @Author gaohengli
* @Version 1.0
*/
//华为工厂
public class HuaweiFactory implements IProductFactory {
@Override
public IphoneProduct iphoneProduct() {
return new HuaweiPhone();
}
@Override
public IRouterProduct iRouterProduct() {
return new HuaweiRouter();
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName XiaomiFactory
* @Date 2020/8/26 16:23
* @Author gaohengli
* @Version 1.0
*/
//小米工厂
public class XiaomiFactory implements IProductFactory{
@Override
public IphoneProduct iphoneProduct() {
return new XiaomiPhone();
}
@Override
public IRouterProduct iRouterProduct() {
return new XiaomiRouter();
}
}
package com.ghl.factory.abstract1;
/**
* @ProjectName DesignPattern
* @ClassName Client
* @Date 2020/8/26 16:36
* @Author gaohengli
* @Version 1.0
*/
//客户端测试
public class Client {
public static void main(String[] args) {
XiaomiFactory xiaomiFactory = new XiaomiFactory();
IphoneProduct iphoneProduct = xiaomiFactory.iphoneProduct();
iphoneProduct.callup();
iphoneProduct.sendSMS();
IRouterProduct iRouterProduct = xiaomiFactory.iRouterProduct();
iRouterProduct.openwife();
}
}