zoukankan      html  css  js  c++  java
  • 设计模式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();
    
    
        }
    }
    
    

  • 相关阅读:
    Another option to bootup evidence files
    切莫低估了使用者捍卫个人隐私的强烈意志
    如何验证证书绑定?
    How to verify Certificate Pinning?
    iDevice取证的一大突破
    Do you know how many stuff inside your Google Account?
    Use LiveCD to acquire images from a VM
    完成评论功能
    从首页问答标题到问答详情页
    首页列表显示全部问答,完成问答详情页布局。
  • 原文地址:https://www.cnblogs.com/ghlz/p/13566163.html
Copyright © 2011-2022 走看看