PHP 工厂方法模式

来源:互联网 发布:最新福利软件 编辑:程序博客网 时间:2024/05/16 08:36
  • 工厂方法模式
<?    interface Messager{        public function send();    }    class Email implements Messager{        public function send(){            echo "send email";        }    }    class SMS implements Messager{        public function send(){            echo "send SMS";        }    }    class MessagerFactory{        public function produceEmail(){            return new Email();        }        public function produceSMS(){            return new SMS();        }    }    $myMessagerFactory = new MessagerFactory();    $myMessager = $myMessagerFactory->produceEmail();    $myMessager->send();
  • 抽象工厂模式
    如果现在想要生产一种新的类就需要去修改工厂方法。抽象工厂就是将工厂方法也抽象成接口,每次如要增加一个类就对应的增加一种工厂对象。
<?    interface Messager{        public function send();    }    class Email implements Messager{        public function send(){            echo "send email";        }    }    class SMS implements Messager{        public function send(){            echo "send SMS";        }    }    interface MessagerFactory{        public function produce();    }    class EmailFactory implements MessagerFactory{        public function produce(){            return new Email();        }    }    class SMSFactory implements MessagerFactory{        public function produce(){            return new SMS();        }    }    /*新增一种Message*/    class Wechat implements Messager{        public function send(){            echo "send Wechat";        }    }    class WechatFactory implements MessagerFactory{        public function produce(){            return new Wechat();        }    }    $myMessagerFactory = new WechatFactory();    $myMessager = $myMessagerFactory->produce();    $myMessager->send();
原创粉丝点击