• 设计模式 值 抽象工厂模式


    简介

    围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.

    UML

    code

    public class Clinet {
        public static void main(String[] args) {
            System.out.println("==================");
            XiaomiFactory xiaomiFactory = new XiaomiFactory();
    
            IphoneProduct iphoneProduct = xiaomiFactory.iphoneProduct();
            iphoneProduct.callup();
            iphoneProduct.sendSMS();
    
            IRouterProduct iRouterProduct = xiaomiFactory.routerProduct();
            iRouterProduct.openWife();
    
        }
    }
    
    
    public class HuaweiFactory implements IProductFactory {
        @Override
        public IphoneProduct iphoneProduct() {
            return new HuaweiPhone();
        }
    
        @Override
        public IRouterProduct routerProduct() {
            return new HuaweiRouter();
        }
    }
    
    
    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("华为发短信");
        }
    }
    
    
    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 seeting() {
            System.out.println("华为设置");
        }
    }
    
    
    public interface IphoneProduct {
        void start();
        void shutdown();
        void callup();
        void sendSMS();
    }
    
    
    public interface IProductFactory {
        IphoneProduct iphoneProduct();
    
        IRouterProduct routerProduct();
    }
    
    
    public interface IRouterProduct {
        void start();
        void shutdown();
        void openWife();
        void seeting();
    }
    
    
    public class XiaomiFactory implements IProductFactory {
        @Override
        public IphoneProduct iphoneProduct() {
            return new XiaomiPhone();
        }
    
        @Override
        public IRouterProduct routerProduct() {
            return new XiaomiRouter();
        }
    }
    
    
    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("小米手机发短信");
        }
    }
    
    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 seeting() {
            System.out.println("小米设置");
        }
    }
    
    
    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    关于几种滤波的对比
    学习笔记深入理解Java中的HashMap数据结构
    学习笔记Redis基础常识
    学习笔记Java内存模型
    学习笔记理解GC
    工作中的点点滴滴单例的使用
    工作中的点点滴滴学习一下门面模式
    工作中的点点滴滴接口幂等的问题
    【转载】WCF、WebAPI、WCFREST、WebService之间的区别
    【转载】工具分享——将C#文档注释生成.chm帮助文档
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/14817451.html
Copyright © 2020-2023  润新知