zoukankan      html  css  js  c++  java
  • java设计模式-工厂模式

    工厂模式种类

    工厂模式可以分为三类:简单工厂模式,工厂方法模式以及抽象工厂模式。

    简单工厂模式

    简单工厂模式又称为静态工厂方法模式,为何称为静态工厂方法模式呢?是因为该模式主要由一个工厂类的静态方法来提供各种产品。

    简单工厂模式的优点

    这里假设有三个角色:消费者,生产者和产品。通过简单工厂模式消费者并不需要关心产品是如何生产出来的,也不需要关心产品制造的具体流程,只需要直接去生产者那里直接购买便可。这在一定程度上实现了生产者和产品之间的解耦,每个角色之间的分工变得更加明确。

    简单工厂模式示例

     产品接口

    public interface Phone {
        //产品类所继承的公共接口,也可以为抽象类
        public String getPhoneName();
    }

    产品

    /**
     *  苹果生产商
     */
    public class IPhone implements Phone {
        @Override
        public String getPhoneName() {
            return "我们生产苹果手机";
        }
    }
    
    
    /**
     *  vivo生产商
     */
    public class VivoPhone implements Phone {
        @Override
        public String getPhoneName() {
            return "我们生产vivo手机";
        }
    }
    
    /**
     *  华为生产商
     */
    public class HuaWeiPhone implements Phone {
        @Override
        public String getPhoneName() {
            return "我们生产华为手机";
        }
    }

    工厂

    /**
     *  工厂负责生产各种手机,这里的生产可以理解为对象的创建
     */
    public class Factory {
    
        //苹果手机
        private static final String APPLE = "apple";
    
        //vivo手机
        private static final String VIVO = "vivo";
    
        //华为手机
        private static final String HUAWEI = "huawei";
    
        //根据用户的选择来提供手机
        public static Phone create(String name)
        {
            switch (name)
            {
                case APPLE:
                    return new IPhone();
                case VIVO:
                    return  new VivoPhone();
                case HUAWEI:
                    return new HuaWeiPhone();
                default:
                    return null;
            }
        }
    }

    消费者(客户端)

    /**
     *  消费者
     */
    public class Customer {
        public static void main(String[] args)
        {
            //用户买个苹果手机
            Phone phone = Factory.create("apple");
            System.out.println(phone.getPhoneName());
    
            //用户买个华为手机
            Phone phone2 = Factory.create("huawei");
            System.out.println(phone2.getPhoneName());
        }
    }

    输出结果:

     

  • 相关阅读:
    如何导出视图中的数据
    swift中的流程控制
    PostgreSQL导出sql脚本文件
    Java分享笔记:使用缓冲流复制文件
    Java分享笔记:FileOutputStream流的write方法
    Java分享笔记:FileInputStream流的 read()方法 和 read(byte[] b)方法
    Java分享笔记:File类中常用方法的介绍
    Java分享笔记:使用entrySet方法获取Map集合中的元素
    Java分享笔记:使用keySet方法获取Map集合中的元素
    Java分享笔记:Map集合(接口)的基本方法程序演示
  • 原文地址:https://www.cnblogs.com/talkingcat/p/10361197.html
Copyright © 2011-2022 走看看