zoukankan      html  css  js  c++  java
  • 《设计模式

    新功能终于今天提测,送了一口小气~

    一:什么是工厂模式?

      - 所谓工厂模式,就是有一种工厂的思维,通过工厂一系列的操作,生成的统一的对象。

      - 工厂模式的出现就是为了解决代码之间的耦合度,通过 “工厂出去” 的对象,可以更方便的进行类的 修改/添加/删除 等等,而不需要大规模的去修改代码。

      - 工厂模式简单分为 简单工厂/工厂方法,下面会去讲一下他们的使用和区别

    二:简单工厂模式?

      - 简单工厂就和他的名字一样,虽然简单,但是却有着很大的作用

      - 最大的优点在于,工厂类中包含了必要的逻辑判断,值通过客户端的选择动态实例化

      - 对于客户端来说,这样去除与具体产品的依赖

      - 就像下面这个简单计算器一样,客户端只需要传对应的条件就可以,工厂会自动给出相对的实例,客户端并不需要知道工厂做了什么

    // 简单计算器实例
    class
    easyFactory { public function CreateOpera($type) { switch ($type) { case '+': return new 加法类(); break; case '-': return new 减法类(); break; case '*': return new 乘法类(); break; } } } $opera = new easyFactory(); // 加法 $instance = $opera->CreateOpera('+'); // 减法 $instance = $opera->CreateOpera('-'); // 乘法 $instance = $opera->CreateOpera('*');

    三:工厂模式

      - 简单工厂模式,适用于条件变化不是很多的 Case, 在频繁的开放扩展中,也修改工厂类,这样也就违反了 面向对象原则 :开放-封闭原则

      - 于是,工厂模式就出现了。

      - 定义:定义一个用于创建对象的接口,让子类决定实例化到那个类,工厂方法使得实例化一个类延迟到子类。

      - 简单来说,就是由客户端决定实例化那个,把逻辑放到了客户端中。这样也就避免了去修改工厂函数,而对工厂的开放扩展

    // 工厂方法
    interface Factory
    {
        function getOpera();
    }
    
    class Add implements Factory
    {
        public function getOpera(argument)
        {
            return new 加法类();
        }
    }
    
    class Reduce implements Factory
    {
        public function getOpera(argument)
        {
            return new 减法类();
        }
    }
    
    class Ride implements Factory
    {
        public function getOpera(argument)
        {
            return new 乘法类();
        }
    }
    
    // 加法
    $opera = new Add();
    $instance = $opera->getOpera('+');
    // 减法
    $opera = new Reduce();
    $instance = $opera->CreateOpera('-');
    // 乘法
    $opera = new Ride();
    $instance = $opera->CreateOpera('*');
  • 相关阅读:
    寻找 身边的幸福
    XML指南——XML 确认
    你最隐秘的性格在哪?
    不用邀请也可以申请GMail的方法
    XMLDOM对象方法:Document对象方法
    XPath函数
    XML指南——微软的XML解析器
    简/繁体互相转换
    WEB程序开发常用小工具包
    职业规划之电脑程序员的蘑菇定律
  • 原文地址:https://www.cnblogs.com/25-lH/p/10025619.html
Copyright © 2011-2022 走看看