首页 > 编程语言 >php设计模式(一)创建

php设计模式(一)创建

时间:2024-10-10 16:24:38浏览次数:7  
标签:function __ product php 创建 模式 子类 设计模式 public

1、创建

单例模式:确保一个类只有一个实例,并提供一个全局访问点。 使用static 静态变量和静态类

工厂模式:主要是把工厂抽象出来一个抽象类,子类继承,通过子类构建,调用

抽象工厂模式:抽象工厂模式的核心就是 共创抽象类不止一个子类的构建,比如,我要发消息,还要推送一条消息,创建两个子类的构建方法

<?php
//工厂模式
interface send {
    public function send();
}

class ali implements send{
    public function send(){
        echo 'ali send';
    }
}

class tx implements send{
    public function send()
    {
        echo 'tx';
    }
}

interface push {
    public function push();
}

class aliPush implements push{
    public function push(){
        echo 'ali send';
    }
}

class txPush implements push{
    public function push()
    {
        echo 'tx';
    }
}

abstract class abFac{
    public function crateMessage(){}
    public function cratePush(){}
}

class AliFac extends abFac{
    public function crateMessage()
    {
        return new ali();
    }
    public function cratePush()
    {
        return new aliPush();
    }
}

class TxFac extends abFac{
     public function crateMessage()
    {
        return new tx();
    }
    public function cratePush()
    {
        return new txPush();
    }
}

$c = new AliFac();
$c->crateMessage();
$c->cratePush();

 

建造者模式:

<?php
//产品类,你可以把它想象成我们要建造的房子。这时的房子还没有任何内容,我们需要给它添砖加瓦。
class Product{

    private $attributes = [];
    public function Add($string){
        $this->attributes[] = $string;
    }
    public function show(){
        foreach($this->attributes as $k=>$v){
            echo $v.PHP_EOL;
        }
    }
}
//建筑商
interface Bulider{
    public function BuildPartA();
    public function BuildPartB();
    public function GetResult();
}

class ConcreteBuilder1 implements Bulider{
    private $product;
    public function __construct()
    {
        $this->product = new Product();
    }
    public function BuildPartA(){
        $this->product->Add('部件A');
    }
    public function BuildPartB(){
        $this->product->Add('部件B');
    }
    public function GetResult(){
        return $this->product;
    }
}

//构造器,构造器,用来调用建造者进行生产。没错,就是我们的工程队。它
class Director{
    public function __construct($builder)
    {
        $builder->BuildPartA();
        $builder->BuildPartB();
    }
}
$con1 = new ConcreteBuilder1();
$c = new Director($con1);

$ccc = $con1->GetResult()->show();

 

原型模式:

主要是__clone 应该叫做克隆模式,类里边儿有引用的时候注意下

2、结构

适配器模式:结合两个不兼容的接口。

3、行为

标签:function,__,product,php,创建,模式,子类,设计模式,public
From: https://www.cnblogs.com/aoxueshou/p/18456595

相关文章

  • 使用Systemd创建开机登录前自启动脚本服务并自动登录
    开机登录前自启动脚本服务首先确定你的系统是否使用systemd来管理系统服务,在shell中输入systemctl命令来判断,有输出则为systemd系统。进入/etc/systemd/system目录,创建myservice.service,其中myservice是你要自定义的服务名。编辑myservice.service文件,修改其内容为:[Unit]Desc......
  • C语言函数栈帧的创建与销毁(32)
    文章目录前言一、什么是函数栈帧?二、理解函数栈帧能解决什么问题?三、函数栈帧的创建和销毁解析什么是栈?认识相关寄存器和汇编指令四、解析函数栈帧的创建和销毁预备知识函数的调用堆栈准备环境转到反汇编函数栈帧的创建函数栈帧的销毁五、回答开篇总结前言应该是......
  • 带你深入浅出设计模式:十二、桥接模式:连接抽象与实现的桥梁
    此为设计模式第十二谈!用总-分-总的结构和生活化的例子给你讲解设计模式!码农不易,各位学者学到东西请点赞收藏支持支持!开始部分:总:桥接模式的本质是将抽象部分与它的实现部分分离,使它们都能独立地变化。分:1.老规矩,自行打开VS创建一个控制台应用程序2.实现编码,这里以汽车......
  • 带你深入浅出设计模式:十一、组合实体模式:软件世界的乐高积木
    此为设计模式第十一谈!用总-分-总的结构和生活化的例子给你讲解设计模式!码农不易,各位学者学到东西请点赞收藏支持支持!开始部分:总:组合模式的目的:让客户端不再区分操作的是组合对象还是叶子对象,都以一个统一的方式来操作。分:1.老规矩,自行在vs创建一个控制台应用2.实现......
  • SDL下创建移动的图片
    在上一章,我们已经了解到如何设置窗口背景,现在,我们将继续引进几张新图片,让它能够在窗口移动。下面的链接可以回顾前面的内容:SDL下设置窗口背景图片1.我们先要确定我们在窗口移动的是哪些图片和图片的大小。stringa[]={"furong1.jpg","furong2.jpg",......
  • PHP语言调用翔云身份证实名认证接口
    身份证实名认证接口是一种用于验证用户身份的在线服务。它通过接收用户提供的身份证号码和姓名,与权威的数据进行比对,以确认用户的身份是否真实有效。使用该接口时,通常需要向服务提供商提供以下信息:用户的姓名用户的身份证号码用户的证件头像用户的现......
  • 最新毕设-Python-旅游数据分析与可视化系统-48196(免费领项目)可做计算机毕业设计JAVA、
    基于python的旅游数据分析与可视化系统的设计与实现摘 要本文旨在设计和实现一个基于Python的旅游数据分析可视化系统。该系统以旅游数据为研究对象,利用Python的数据处理能力和可视化技术,对旅游数据进行深入分析,并通过直观的可视化图表展示分析结果。本文首先介绍了旅游数......
  • 使用C#和WCF创建并托管简单服务的指南
    在C#中,实现WindowsCommunicationFoundation(WCF)功能通常涉及几个关键步骤,包括定义服务契约、实现服务、配置服务以及托管服务。下面是一个简单的示例,展示如何使用C#和WCF来创建一个简单的服务。步骤1:创建服务契约首先,我们需要定义一个服务契约,这通常是通过接口来......
  • php网站忘记后台密码忘记怎么办
    如果你忘记了PHP网站后台的登录密码,可以通过以下几种方法来尝试恢复或重置密码:检查邮箱:如果在创建账户时设置了找回密码的功能,并且绑定了邮箱,可以先检查注册时使用的邮箱是否有找回密码的邮件。数据库直接修改:通过phpMyAdmin或其他数据库管理工具登录到MySQL数据库。......
  • 【D3.js in Action 3 精译_032】第四章 D3 直线、曲线与弧线的绘制 + 4.1 坐标轴的创
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第一部分D3.js基础知识第一章D3.js简介(已完结)1.1何为D3.js?1.2D3生态系统——入门须知1.3数据可视化最佳实践(上)1.3数据可视化最佳实践(下)1.4本章小结第二章DOM的操作方法(已完结)2.1第一......