1. 程式人生 > 實用技巧 >設計模式4——抽象工廠模式

設計模式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();


    }
}