• Java: Simple Factory(Static Factory Method Pattern)


    /*
     * 版权所有 2021 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     *简单工厂模式  simple factory
     * 历史版本: JDK 14.02
     * 2021-12-12 创建者 geovindu
     * 2021-12-15 添加 Lambda
     * 2021-12-15 修改:date
     * 接口类
     * 2021-12-15 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc Fruit.java
     *
     * */
    
    
    
    
    package com.javapatterns.simplefactory;
    
    /*
    
    * */
    public interface Fruit {
    
        /*
         *生长
         * */
        void grow();
        /*
        * 收获
        * */
        void harvest();
        /*
         *种植
         * */
        void plant();
    
    }
    

      

    /*
     * 版权所有 2021 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     *简单工厂模式  simple factory
     * 历史版本: JDK 14.02
     * 2021-12-12 创建者 geovindu
     * 2021-12-15 添加 Lambda
     * 2021-12-15 修改:date
     * 接口类
     * 2021-12-15 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc Apple.java
     *
     * */
    
    
    package com.javapatterns.simplefactory;
    
    
    /*
     *苹果
     * */
    public class Apple  implements Fruit
    {
        /*
         *生成
         * */
        public void grow()
        {
            System.out.println("Apple is growing...");
        }
        /*
         *收获
         * */
        public void harvest()
        {
            System.out.println("Apple has been harvested.");
        }
        /*
         *种植
         * */
        public void plant()
        {
            System.out.println("Apple has been planted.");
        }
        /*
        *日志
        * */
        public static void log(String msg)
        {
            System.out.println(msg);
        }
        /*
         *树龄取值方法
         * */
        public int getTreeAge(){ return treeAge; }
        /*
         *树龄的赋值方法
         * */
        public void setTreeAge(int treeAge){ this.treeAge = treeAge; }
    
        private int treeAge;
    
    }
    

      

    /*
     * 版权所有 2021 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     *简单工厂模式  simple factory
     * 历史版本: JDK 14.02
     * 2021-12-12 创建者 geovindu
     * 2021-12-15 添加 Lambda
     * 2021-12-15 修改:date
     * 接口类
     * 2021-12-15 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc Grape.java
     *
     * */
    
    
    package com.javapatterns.simplefactory;
    
    /*
    * 葡萄
    * */
    public class Grape implements Fruit{
    
    
        /*
         *生长
         * */
        public void grow()
        {
            System.out.println("Grape is growing...");
        }
        /*
        收获
        * */
        public void harvest()
        {
            System.out.println("Grape has been harvested.");
        }
        /*
        种植
         * */
        public void plant()
        {
            System.out.println("Grape has been planted.");
        }
    
        /*
         *日志
         * */
        public static void log(String msg)
        {
            System.out.println(msg);
        }
        /*
         有无籽取值方法
         * */
        public boolean getSeedless()
        {
            return seedless;
        }
        /*
          有无籽赋值方法
         * */
        public void setSeedless(boolean seedless)
        {
            this.seedless = seedless;
        }
        /*
         * */
        private boolean seedless;
    }
    

      

    /*
     * 版权所有 2021 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     *简单工厂模式  simple factory
     * 历史版本: JDK 14.02
     * 2021-12-12 创建者 geovindu
     * 2021-12-15 添加 Lambda
     * 2021-12-15 修改:date
     * 接口类
     * 2021-12-15 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc Strawberry.java
     *
     * */
    
    package com.javapatterns.simplefactory;
    /*
    * 草莓
    * */
    public class Strawberry implements Fruit{
    
    
        /*
         *生长
         * */
        public void grow()
        {
            System.out.println("Strawberry is growing...");
        }
        /*
         *   收获
        * */
        public void harvest()
        {
            System.out.println("Strawberry has been harvested.");
        }
        /*
        种植
         * */
        public void plant()
        {
            System.out.println("Strawberry has been planted.");
        }
    
        /*
         *日志
         * */
        public static void log(String msg)
        {
            System.out.println(msg);
        }
    
    
    }
    
    /*
     * 版权所有 2021 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     *简单工厂模式  simple factory
     * 历史版本: JDK 14.02
     * 2021-12-12 创建者 geovindu
     * 2021-12-15 添加 Lambda
     * 2021-12-15 修改:date
     * 接口类
     * 2021-12-15 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc FruitGardener.java
     *
     * */
    
    
    
    package com.javapatterns.simplefactory;
    
    public class FruitGardener {
    
    
        /*
        * 靜態工廠方法  塗聚文、涂聚文,Geovin Du,geovindu
        * */
        public static Fruit factory(String which) throws BadFruitException
        {
            if (which.equalsIgnoreCase("apple"))
            {
                return new Apple();
            }
            else if (which.equalsIgnoreCase("strawberry"))
            {
                return new Strawberry();
            }
            else if (which.equalsIgnoreCase("grape"))
            {
                return new Grape();
            }
            else
            {
                throw new BadFruitException("Bad fruit request");
            }
        }
    
    
    }
    

      

    /*
     * 版权所有 2021 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     *简单工厂模式  simple factory
     * 历史版本: JDK 14.02
     * 2021-12-12 创建者 geovindu
     * 2021-12-15 添加 Lambda
     * 2021-12-15 修改:date
     * 接口类
     * 2021-12-15 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc BadFruitException.java
     *
     * */
    
    
    
    package com.javapatterns.simplefactory;
    
    public class BadFruitException  extends Exception{
    
        /*
        * */
        public BadFruitException(String msg)
        {
            super(msg);
        }
    }
    

      

    调用:

            try
            {
                //靜態工廠方法
                Grape g=(Grape) FruitGardener.factory("grape");
                // System.out.println();
                g.grow();
                g.getlog("geovindu,hi.");
    
            }
            catch (BadFruitException exception)
            {
                exception.printStackTrace();
            }
            
    

      

    输出:

    Grape is growing...
    geovindu,hi.
    

      

     

  • 相关阅读:
    377 TODOMVC:准备工作,配置 vue,列表渲染,添加任务,删除任务,编辑任务 ,Footer 的显示与隐藏
    376 vue指令:v-model (常用),v-text 和 v-html,v-bind (常用),操作样式,v-on,v-for,v-pre,v-once,v-cloak
    375 vue数据双向绑定演示:一个 input + v-model,Object.defineProperty,数据双向绑定的原理简单实现
    374 vue起步
    373 Vue 介绍,框架和库的区别 ,MVC + MVVM
    实现一个vue-router插件
    浅谈react context
    Flutter网络请求与JSON解析
    Vue中组件
    vue数据监听
  • 原文地址:https://www.cnblogs.com/geovindu/p/16684871.html
Copyright © 2020-2023  润新知