设计模式4——抽象工厂模式

设计模式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();


    }
}

原文地址:https://www.cnblogs.com/ghlz/p/13566163.html