首页 > 编程语言 >php设计模式(二)结构

php设计模式(二)结构

时间:2024-10-10 17:11:48浏览次数:8  
标签:function php send 接口 模式 new 设计模式 public 结构

适配器模式(Adapter):结合两个不兼容的接口。GoF定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

<?php
class message{
    public function send(){
        echo 'fa xiao ix';
    }
    public function push(){
        echo 'tui xiao xi';
    }
}

class jiguang{
    public function sendMsg(){
        echo 'ji guang';
    }
    public function pushMsg(){
        echo 'jiguang push';
    }
}

class jiguangAdpter extends message{
    public $message;
    public function __construct()
    {
        $this->message = new jiguang;
    }

    public function send(){
        $this->message->sendMsg();
    }

    public function pushMsg(){
        $this->message->pushMsg();
    }
}

$jiguangAd = new jiguangAdpter();
$jiguangAd->send();

桥接模式(Bridge):通过封装一个抽象的接口,使得实现和抽象可以独立变化。GoF定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

在程序世界中,其实就是组合/聚合的代名词。为什么这么说呢?熟悉面向对象的我们都知道继承的好处,子类可以共享父类的很多属性、功能。但是,继承也会带来一个问题,那就是严重的耦合性。父类的修改多少都会对子类产生影响,甚至一个方法或属性的修改都有可能让所有子类都去修改一遍。这样就违背了开放封装原则。而桥接就是为了解决这个问题,它强调的是用组合/聚合的方式来共享一些能用的方法。相信大家一定想到了php中的trait,如果你在工作中使用过这个特性,那么你就已经用过桥接模式了!

<?php
//桥接模式
interface MessageTemplate
{
    public function GetTemplate();
}

class LoginMessage implements MessageTemplate{
    public function GetTemplate()
    {
        echo 'denglu duanxin';
    }
}
class RegMessage implements MessageTemplate{
    public function GetTemplate(){
        echo 'zhuce duanxin';
    }
}

abstract class MessageService{
    public $template;
    public function __construct($template){
        $this->template = $template;
    }
    // abstract public function send();
}

class AliService extends MessageService{
    public function Send()
    {
        $this->template->GetTemplate();
    }
}

$login = new LoginMessage();
$reg = new RegMessage();

$al = new AliService($login);
$al->send();

组合模式(Composite):创建对象组的树形结构,使得单个对象和组合对象具有一致性。


装饰器模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,比生成子类更为灵活。
外观模式(Facade):为复杂的模块或子系统提供可以访问的接口,并且隐藏了内部的复杂性。
享元模式(Flyweight):通过共享技术有效地支持大量细粒度的对象。
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。

标签:function,php,send,接口,模式,new,设计模式,public,结构
From: https://www.cnblogs.com/aoxueshou/p/18456766

相关文章

  • php学习片段
    目录1.$2.->3.EOF4.数组5.in_array6.=>7.as8.unset1.$$i是一个变量名,在PHP中以$符号开头表示一个变量。1.$i=0;这里将变量$i初始化为0。2.->PHP代码中,->是用于访问对象的属性和方法的操作符。例如:$res->fields["job_number"]表示访问$res这个对象的fi......
  • php设计模式(一)创建
    1、创建单例模式:确保一个类只有一个实例,并提供一个全局访问点。使用static静态变量和静态类工厂模式:主要是把工厂抽象出来一个抽象类,子类继承,通过子类构建,调用抽象工厂模式:抽象工厂模式的核心就是共创抽象类不止一个子类的构建,比如,我要发消息,还要推送一条消息,创建两个子类的......
  • 带你深入浅出设计模式:十二、桥接模式:连接抽象与实现的桥梁
    此为设计模式第十二谈!用总-分-总的结构和生活化的例子给你讲解设计模式!码农不易,各位学者学到东西请点赞收藏支持支持!开始部分:总:桥接模式的本质是将抽象部分与它的实现部分分离,使它们都能独立地变化。分:1.老规矩,自行打开VS创建一个控制台应用程序2.实现编码,这里以汽车......
  • 前端数据结构之数组
    对象允许存储键值集合,这很好。但很多时候我们发现还需要有序集合,里面的元素都是按顺序排列的。例如,我们可能需要存储一些列表,比如用户、商品以及HTML元素等。这里使用对象就不是很方便了,因为对象不能提供能够管理元素顺序的方法。我们不能在已有的元素“之间”插入一个......
  • 带你深入浅出设计模式:十一、组合实体模式:软件世界的乐高积木
    此为设计模式第十一谈!用总-分-总的结构和生活化的例子给你讲解设计模式!码农不易,各位学者学到东西请点赞收藏支持支持!开始部分:总:组合模式的目的:让客户端不再区分操作的是组合对象还是叶子对象,都以一个统一的方式来操作。分:1.老规矩,自行在vs创建一个控制台应用2.实现......
  • 2.选择结构程序设计
    三个数找最大值:题目描述有三个整数abc,由键盘输入,输出其中的最大的数。输入格式一行数组,分别为abc输出格式abc其中最大的数样例输入102030样例输出30#include<stdio.h>intmain(){inta,b,c;intmaxnum;scanf("%d%d%d",&a,&b,&c);......
  • Bluespec SystemVerilog(BSV) 及 MIT 体系结构公开课 笔记
    前言早年MIT有三门用bsv作为硬件描述语言的体系结构课程,代号分别为6.004,6.175和6.375.根据MITCScourselist,现在这三门课分别改名为了6.1910、6.1920和6.5900.本文是自学这三门课所需的bsv时记录的笔记,内容主要来源于这三门课目前公开的资料(6.17516fall,6.375......
  • PHP语言调用翔云身份证实名认证接口
    身份证实名认证接口是一种用于验证用户身份的在线服务。它通过接收用户提供的身份证号码和姓名,与权威的数据进行比对,以确认用户的身份是否真实有效。使用该接口时,通常需要向服务提供商提供以下信息:用户的姓名用户的身份证号码用户的证件头像用户的现......
  • 关于set实现结构体自动去重原理的推论
    转自本人博客,原文链接先说结论在每个操作均为log复杂度的前提下,set无法在判断顺序和重复关键字不同时完成对结构体元素的去重。  首先我们先看这段结构体定义,目的是先按num相等进行去重,再按key降序排列。structnode{intnum;intkey;booloperator<(con......
  • 最新毕设-Python-旅游数据分析与可视化系统-48196(免费领项目)可做计算机毕业设计JAVA、
    基于python的旅游数据分析与可视化系统的设计与实现摘 要本文旨在设计和实现一个基于Python的旅游数据分析可视化系统。该系统以旅游数据为研究对象,利用Python的数据处理能力和可视化技术,对旅游数据进行深入分析,并通过直观的可视化图表展示分析结果。本文首先介绍了旅游数......