• 设计模式-4-工厂方法


    简介:工厂类创建对应实现类的工作,交给子类去实现

    目的:不修改工厂类的情况下,引进其他产品

    总结:工厂方法就是提供一个抽象的工厂,一个抽象的产品,相当于Driver(数据库连接工厂)和Connection(抽象产品);

               实现一方需要提供一个具体的工厂类(比如mysql驱动)和一个具体的产品(比如mysql数据库连接)

    组成:工厂接口, 工厂接口实现类, 具体产品的接口,产品实现类

    一,工厂接口

    package com.design.d.factory.method;
    
    /**
     * 抽象工厂
     */
    public interface CoreFactory {
    
        HospitalService createHospitalFactory();
        
    }

    二,工厂接口实现类

    package com.design.d.factory.method;
    /**
     * 指定产品的具体工厂
     */
    public class GzHospitalFactory implements CoreFactory {
    
        @Override
        public HospitalService createHospitalFactory() {
            return new GzHospitalServiceImpl();
        }
    
        
    }
    package com.design.d.factory.method;
    /**
     * 指定产品的具体工厂
     */
    public class HzHospitalFactory implements CoreFactory {
    
        @Override
        public HospitalService createHospitalFactory() {
            return new HzHospitalServiceImpl();
        }
    
    }

    三,具体产品接口

    package com.design.d.factory.method;
    /**
     * 抽象产品接口
     */
    public interface HospitalService {
    
        void guahao();
    }

    四,产品实现类

    package com.design.d.factory.method;
    /**
     * 具体的产品
     */
    public class GzHospitalServiceImpl implements HospitalService {
    
        @Override
        public void guahao() {
            System.out.println(" GZ - 医院挂号  ... ...");
        }
    
    }
    package com.design.d.factory.method;
    /**
     * 具体的产品
     */
    public class HzHospitalServiceImpl implements HospitalService {
    
        @Override
        public void guahao() {
            System.out.println(" HZ - 医院挂号  ... ...");
        }
    
    }

    Main:

    package com.design.d.factory.method;
    /**
     * 4-工厂方法模式
     */
    public class MainTest {
    
        public static void main(String[] args) {
            
            CoreFactory hospitalFactory = new GzHospitalFactory();
            HospitalService gz = hospitalFactory.createHospitalFactory();
            gz.guahao();
            
            hospitalFactory = new HzHospitalFactory();
            HospitalService hz = hospitalFactory.createHospitalFactory();
            hz.guahao();
        }
    }

    Result:

     GZ - 医院挂号  ... ...
     HZ - 医院挂号  ... ...
  • 相关阅读:
    (转)Ogre终于开始改进其对地形渲染的支持
    (转)让VS2005编辑器支持着色器语法高亮
    (转)天龙粒子系统改进
    (转)【行业专题】计算机世界《狗日的腾讯》报道
    (转)Ogre天龙八部2及鹿鼎记天空顶(Skydome)镜头眩光(Lens Flare)等效果的实现
    (转)“你的代码写的很烂”
    程序员能力矩阵
    Oracle操作表空间
    TCP/IP、HTTP、WEBSERVICE、SOAP、ICE都使用后才有感慨
    oracleserviceSID 在系统服务里丢失
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/7196881.html
Copyright © 2020-2023  润新知