程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 手把手教你做關鍵詞匹配項目(搜索引擎)---- 第十三天,教你做第十三天

手把手教你做關鍵詞匹配項目(搜索引擎)---- 第十三天,教你做第十三天

編輯:關於PHP編程

手把手教你做關鍵詞匹配項目(搜索引擎)---- 第十三天,教你做第十三天


第十三天

 

自從小帥帥被於老大批了之後,心裡非常不爽,因為有這樣的理由:我已經做到了你想要的,為什麼還得不到肯定。

什麼樣的程序員才是優秀的?小帥帥帶著這樣的疑問去了解設計模式。

盡管他把設計模式看了很多遍,甚至連設計模式的名字背得滾瓜爛熟,單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式...等。

但是小帥帥還是不知道如何去用,沒辦法,他只好再次去請教於老大,於老大給了一份代碼讓他去看,看看裡面用了什麼設計模式。

 

什麼樣的程序員才是優秀的?有人說,優秀的程序員是寫出可以閱讀的代碼,而普通的程序員是寫出可以運行的代碼。

 

於老大的代碼如下:

<?php
class SelectorItem {

    private $item;

    public function __construct($item){
        $this->item = $item;
    }

    public function __get($name){
        if(isset($this->item->$name)){
            return $this->item->$name;
        }
        return null;
    }

    public static function createFromApi($num_iid){
        $client = new TopClient();
        $client->appkey = 'xx';
        $client->secretKey = 'xx';

        $req = new ItemGetRequest();
        $req->setFields('props_name,property_alias,detail_url,cid,title');
        $req->setNumIid($num_iid);
        $resp = $client->execute($req);

        if(isset($resp->code)){
            # error handle
            throw new Exception($resp->msg, $resp->code);
        }
        return new self($resp->item);
    }
}


class CharList {

    private $core = array();
    private $blacklist = array();

    public function addCore($char){

        if(!in_array($char,$this->core))
            $this->core[] = $char;
    }
    
    public function getCore(){
        return $this->core;
    }

    public function addBlacklist($char){
        if(!in_array($char,$this->blacklist))
            $this->blacklist[] = $char;
    }
    
    public function getBlacklist(){
        return $this->blacklist;
    }
}

abstract class CharListHandle {
    
    protected $charlist;
    public function __construct($charlist){
        $this->charlist = $charlist;
    }
    
    abstract function exec();
}

class MenCharListHandle extends CharListHandle {
    
    public function exec(){
        $this->charlist->addCore("男裝");
        $this->charlist->addBlacklist("女");
    }
}

class WomenCharListHandle extends CharListHandle{
    public function exec(){
        $this->charlist->addCore("女裝");
        $this->charlist->addBlacklist("男");
    }
}

# 其他CharList Handle小帥帥完成

class Selector {

    private static  $charListHandle = array(
        "男裝"=>"MenCharListHandle",
        "女裝"=>"WomenCharListHandle",
        "情侶裝"=>"LoversCharListHandle",
        "童裝"=>"ChildrenCharListHandle"
    );

    public static function select($num_iid){
        $selectorItem = SelectorItem::createFromApi($num_iid);
        Logger::trace($selectorItem->props_name);
        $matchTitle = $selectorItem->title.$selectorItem->props_name;
        
        $charlist = new CharList();
        
        foreach(self::$charListHandle as $matchKey=>$className){
            if(preg_match("/$matchKey/",$matchTitle)){
                $handle = self::createCharListHandle($className,$charlist);
                $handle->exec();
            }
        }
        
        //do search things       

    }
    
    public static function createCharListHandle($className,$charlist){
        if(class_exists($className)){
            return new $className($charlist);
        }
        throw new Exception("class not exists",0);
    }
}

小帥帥看了代碼後再也按耐不住了,這就是傳說中的於老大,還不是抄的我的代碼。。。

於老大要是聽到小帥帥的想法,會有什麼舉動呢?

小帥帥沒辦法繼續去研究神功秘籍。




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved