从零开始学设计模式(1):基础编程模式
时间:2022-05-03
本文章向大家介绍从零开始学设计模式(1):基础编程模式,主要内容包括Introduction、面向对象编程、调试技巧、流水账编程、面向过程编程、Summary、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
Introduction
俗话说,“PHP是世界上最好的语言”,因为PHP什么都能干。但是在PHP编程中,你是否会遇到这样的困惑:明明是相同的需求,但是之前写的代码却并不能重用,稍微修改不满足需求,大改又会让页面变样。 是的,由于PHP什么都能干,但是高度灵活性降低了代码的结构性。虽然可以利用三方框架来解决问题,但问题的根本在于缺乏设计模式。 本系列文章将由浅入深的介绍各种设计模式。
面向对象编程
面向对象编程,Object-Oriented Programming(OOP)作为最基本的设计模式并不是什么新鲜的话题,但是大部分新手的PHP编程都是在写流水账,各种拼接字符串,所以这里还是要提一下。 Object-Oriented Programming的概念这里就不说了,毕竟很多人都明白,但是如何在PHP中使用? 假设你需要在页面上显示不同的用户类型,如电脑用户、手机用户等,那么你可以将“显示”这件事抽象为一个类,如:
<?phpclass ShowAgent { private $agent; public function __construct() { $this->agent = $_SERVER['HTTP_USER_AGENT']; echo $this->agent; }}$showAgent = new ShowAgent();?>
调试技巧
在很多PHP默认环境中,调试功能是关闭的。打开调试功能又需要配置php.ini文件,其实有一个简单的方法:
<?phpini_set("display_errors", "1");ERROR_REPORTING(E_ALL);?>
将这段代码加入到你的代码中,甚至可以require或者include进去,方便调试。
流水账编程
这里列出流水账编程,并不是让你学习,而是指出何种编程不推荐使用:
<?php$total = "Total number is ";$number = "6";$totalNumber = $total.$number;echo $totalNumber;?>
这段代码并没有错,但是以后再也无法重用了,对吧?每次遇到相同问题,你都需要反复拼接。
面向过程编程
面向过程编程曾经很流行,缺点也是无法维护,例如:
<?php
-
function showTotal($total, $number)
{
$totalNumber = $total.$number;
echo $totalNumber;
-
}
-
showTotal("Total number is",
"6");
-
?>
这段代码同样没有错,但是时间久了,由于缺乏类的概念,showTotal在各种应用场景缺乏灵活性,你还是需要重写代码。
Summary
转变编程的思维需要花费的时间是很长的,但是记住:算法提高程序运行的速度,而设计模式提高编程的速度。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python之unittest框架实现接口测试的一个简单实例
- linux提权-Suid和Guid配置错误
- Git快速学习
- Spring笔记
- ARL灯塔最新版本2.1,现在它来了,快来看看盒子带来了什么有趣的更新
- 渗透测试常规操作记录(下)
- IntelliJ IDEA 2020.2激活破解教程
- Java String 源码分析
- Java ArrayList 源码
- Java8 HashMap 源码分析
- 数据分析方法论-统计学内容学习
- 同步与异步 Python 有何不同?
- 非线性方程组求解迭代算法&图像寻初始值讲解
- MyBatis笔记
- 网络工程师提高篇 | 路由重发布你了解多少?从原理到配置,瑞哥带你学习一波!