zoukankan      html  css  js  c++  java
  • 大话设计模式之----适配器模式

    <?php
        #将一个类的接口换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
        
        abstract class Player{
            protected $name;
            function __construct($name){
                $this->name= $name;
            }
            abstract function Attack();
            abstract function Defense();
        }
        
        //前锋
        class Forwards extends Player
        {
            public function __construct($name){
                $this->name= $name;
            }
            public function Attack(){
                echo "前锋".$name."进攻";
            }
            
            public function Defense(){
                echo "前锋".$this->name."防守";
            }
        }
        
        //中锋
        class Center extends Player{
            public function __construct($name){
                $this->name= $name;
            }
            public function Attack(){
                echo "中锋".$this->name."进攻";
            }
            
            public function Defense(){
                echo "中锋".$this->name."防守";
            }
            
        }
        
        //外籍中锋
        class ForeignCenter{
            protected $name;
            public function __get($name){
                return $this->$name;
            }
            public function __set($name,$val){
                $this->$name = $val;
            }
            public function gongji(){
                echo "中锋".$this->name."进攻";
            }
            
            public function fangshou(){
                echo "中锋".$this->name."防守";
            }
            
        }
        
        //后卫
        class Guards extends Player{
            public function __construct($name){
                $this->name= $name;
            }
            public function Attack(){
                echo "后卫".$this->name."进攻";
            }
            
            public function Defense(){
                echo "后卫".$this->name."防守";
            }
        
        }
        
        class adapter extends Player{
            public $adapter;
            //$this->adapter = new ForeignCenter(); 报错
            public function __construct($name){
                //var_dump($name);die;
                $this->adapter = new ForeignCenter();
                $this->adapter->name = $name;
            }
            
            //攻击
            public function Attack(){
                $this->adapter->gongji();
            }
            
            //防守
            public function Defense(){
                $this->adapter->fangshou();
            }
        
        }
        
        
        //客户段代码
        $F = new Forwards("巴蒂尔");
        $F->Attack();
        $G = new Guards("麦克格雷迪");
        $G->Attack();
        
         /*由于姚明一开始不知道Attack与Defense的中文意思,所以需要适配器
        $ym = new Center("姚明");
        $ym->Attack();
        $ym->Defense(); */
        
        //适配器翻译过后代码
        $ym = new adapter('姚明');
        $ym->Attack();
        $ym->Defense();
        
        
    ?>

  • 相关阅读:
    Struts2声明式异常处理
    几种常用的过滤器
    Jdk 和 Tomcat的 安装。(旧版本,请看新版本3篇)
    java 判断字符串是否相等
    PreparedStatement 查询 In 语句 setArray 等介绍。
    String、StringBuffer与StringBuilder之间区别
    IntelliJ IDEA 里 查看一个函数注释的方法是 ctrl+q
    Java字符串拼接效率对比
    Java 中判断字符串是否为空
    IntelliJ IDEA + Tomcat ;On Upate Action 与 On Frame Deactivation
  • 原文地址:https://www.cnblogs.com/wendong/p/3860486.html
Copyright © 2011-2022 走看看