工厂模式的简单原理

jianbing123 2019-12-23 原文

工厂模式的简单原理

工厂模式:顾名思义就是创建对象或者特定资源的设计容器;

<?php

    /**工厂模式:解决类与类之间的高耦合问题,实现类内部的高聚合,低耦合
     *设计思想:当类的资源会在项目中高频的调用,若该类的生成方法有变化(如创建对象添加了参数),则必须在依赖此类的所有文件中动态的做出修改,
     * 十分繁琐不方便且容易出错,工厂模式正是解决类之间的高度耦合问题,使得类的构造交给某个特定的工厂类,需要调用此类资源的其他文件只需依赖于
     * 某个特定的工厂类,降低耦合度;
     *
     * 工厂模式的粗糙展示
     * */
    //能力接口
    interface power
    {
        function fly();

        function shoot();
    }

    //兽族工厂
    class Orcs implements power
    {
        function fly()
        {
            return 'the animal has a pair of wings';
        }

        function shoot()
        {
            return 'the animal can use guns';
        }
    }

    //人族
    class Man implements power
    {
        function fly()
        {
            return 'the man can fly with airplane';
        }

        function shoot()
        {
            return 'the man is the inventor of hot weapon';
        }
    }
    class Factory
    {
        public static function createHero($type)
        {
            switch($type){
                case 'man':
                    return new Man;
                    break;
                case 'orcs':
                    return new Orcs;
                    break;
            }
        }
    }

    //类通过工厂类构造,当类的创建方式有所变化时,只需修改工厂类中的构造形式即可
    $man = Factory::createHero('man');
    echo $man->fly()."<br />";

    $orcs = Factory::createHero('orcs');
    echo $orcs->shoot();

工厂模式

发表于
2019-12-23 23:55 
small-river 
阅读(
评论(

编辑

收藏

 

版权声明:本文为jianbing123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jianbing123/p/12089168.html

工厂模式的简单原理的更多相关文章

随机推荐

  1. 用WPE+CCproxy+自动代理截取安卓游戏封包

    wpe三件套:https://pan.baidu.com/s/19gI2GPZ0iuu4wpKljCOn4A […]...

  2. Android版数据结构与算法(八):二叉排序树

    本文目录 前两篇文章我们学习了一些树的基本概念以及常用操作,本篇我们了解一下二叉树的一种特殊形式:二叉排序树( […]...

  3. SpringBoot 异步输出 Logback 日志

    一、介绍 1.1 Logback   Logback是由log4j创始人设计的另一个开源日志组件,它分为下面下 […]...

  4. 判断程序是否运行在管理员权限下 – C Pointer

    判断程序是否运行在管理员权限下 1.提出两个概念(成立条件是系统是Vista后续版本,这是因为引入了UAC) […]...

  5. java 实现加密

      加密有单向加密和双向加密之分,也叫对称加密和非对称加密,双向加密就是把数据加密后,还可以解密成原来的数据, […]...

  6. java代码之美(14)—Java8 函数式接口

    Java8 函数式接口 之前写了有关JDK8的Lambda表达式:java代码之美(1)—Java […]...

  7. AlphaGo的前世今生(一)Deep Q Network and Game Search Tree:Road to AI Revolution – 木言成反

    AlphaGo的前世今生(一)Deep Q Network and Game Search Tree:Road […]...

  8. Java面试通关宝典

    1、说说Java中异常的分类: 答:可分为Error和Exception。 从概念角度分析: Error:是程 […]...

展开目录

目录导航