zoukankan      html  css  js  c++  java
  • PHP的设计模式总结工厂模式

    工厂模式:工厂类是指一个专门用来创建其他对象的方法的类,返回符合类似接口的不同的类,工厂的一种常见用法就是创建多态的提供者,从而允许我们基于应用程序逻辑或者配置设置来决定应实例化哪一个类。

    简单来说,就是为了达到某种目标,需要采用某种方法,而方法会因为作用对象的不同而不同。例如,在计算一笔订单时,需要根据会员等级来确定金额,这时就要用不同的方法。

    以下是我的代码,(比较粗糙,只为说明问题)

     1 <?php 
     2 interface price{
     3     function getPrice();
     4 }
     5 
     6 class  normalprice implements price{
     7     protected $_oprice;
     8     public  function __construct($_oprice){
     9         $this->_oprice=$_oprice;
    10     }
    11     public function getPrice(){
    12         return $this->_oprice;
    13     }
    14 }
    15 
    16 class  vipprice implements price{
    17     protected $_oprice;
    18     public  function __construct($_oprice){
    19         $this->_oprice=$_oprice;    
    20     }
    21     public function getPrice(){
    22         return $this->_oprice*0.8;
    23     }
    24 }
    25 
    26 class priceFactory{
    27     public static function factory($_oprice,$grade){
    28      if($grade=="normal"){
    29          $price=new normalprice($_oprice);
    30      }elseif ($grade=="vip"){
    31          $price=new vipprice($_oprice);
    32      }
    33         
    34         
    35           if($price instanceof price){
    36               return $price;
    37           }else {
    38               echo 'return wrong';
    39           }
    40     }
    41 }
    42 
    43 
    44   $vip=priceFactory::factory(100,"vip");
    45  echo $vip->getPrice();
    46  echo '<br/>';
    47  $normal=priceFactory::factory(100,"normal");
    48  echo $normal->getPrice();
    49 
    50 
    51 
    52 ?>

    另外还有根据图像格式获得相关数据,以及根据不同的数据库获得统一的操作接口,都可以用工厂模式解决。

  • 相关阅读:
    vue项目中关闭eslint
    关于ios的safari下,页面底部弹出登陆遮罩层,呼出软键盘时 问题解决
    1.wap端绑定电话号码&发送短信
    node.js的安装与配置
    2020年Web前端开发工作容易找吗?
    JS干货分享—-this指向
    2020年学习前端开发应该看哪些书?
    laravel migrate增加、修改、删除字段
    echarts饼状统计图、柱状统计图
    PHP伪静态
  • 原文地址:https://www.cnblogs.com/phplover/p/2970346.html
Copyright © 2011-2022 走看看