Rumah pembangunan bahagian belakang tutorial php php设计模式 State (状态模式)_PHP

php设计模式 State (状态模式)_PHP

Jun 01, 2016 pm 12:15 PM
corak reka bentuk php state mod keadaan

状态state模式是GOF23种模式中的一种,和命令模式一样,也是一种行为模式。状态模式和命令模式相当像,一样是“接口—实现类”这种模式的应用,是面向接口编程原则的体现。

状态模式属于对象创建型模式,其意图是允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了他的类。比较常见的例子是在一个表示网络连接的类TCPConnection,一个TCPConnection对象的状态处于若干不同的状态之一:连接已经建立(Established),正在监听,连接已经关闭(closed)。当一个TCPConnection对象收到其他对象的请求时,他根据自身的状态作出不同的反应。

例如:一个Open请求的结果依赖于该连接已关闭还是连接已建立状态。State模式描述了TCPConnection如何在每一种状态下表现出不同的行为。这一种模式的关键思想是引入了一个称为TCPState的抽象类表示网络的连接状态,TCPState类为各种表示不同的操作状态的字类声明了一个公共接口。TCPState的子类实现与特定的状态相关的行为。例如,TCPEstablished和TCPClosed类分别实现了特定于TCPConnection的连接已建立状态和连接已关闭状态的行为。

举例来说:一个人具有生气,高兴和抓狂等状态,在这些状态下做同一个事情可能会有不同的结果,一个人的心情可能在这三种状态中循环转变。使用一个moodState类表示一个人的心情,使用mad,Happy,Angry类代表不同的心情。

先看一个例子:

复制代码 代码如下:
/**
* 状态模式
*
* 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类
*
*/
interface State
{
public function handle($state);
public function display();
}
class Context
{
private $_state = null;
public function __construct($state)
{
$this->setState($state);
}
public function setState($state)
{
$this->_state = $state;
}
public function request()
{
$this->_state->display();
$this->_state->handle($this);
}
}
class StateA implements State
{
public function handle($context)
{
$context->setState(new StateB());
}
public function display()
{
echo "state A
";
}
}
class StateB implements State
{
public function handle($context)
{
$context->setState(new StateC());
}
public function display()
{
echo "state B
";
}
}
class StateC implements State
{
public function handle($context)
{
$context->setState(new StateA());
}
public function display()
{
echo "state C
";
}
}
// 实例化一下
$objContext = new Context(new StateB());
$objContext->request();
$objContext->request();
$objContext->request();
$objContext->request();
$objContext->request();

状态模式的理解,关键有2点:

1. 通常命令模式的接口中只有一个方法。 而状态模式的接口中有1个或者多个方法。而且,状态模式的实现类的方法,一般返回值;或者是改变实例变量的值。也就是说,状态模式一般和对象的状态有关。实现类的方法有不同的功能,覆盖接口中的方法。状态模式和命令模式一样,也可以用于消除if…else等条件选择语句。

2. 主要的用途是,作为实例变量,是一个对象引用。命令模式的主要的使用方式是参数回调模式。命令接口作为方法的参数传递进来。然后,在方法体内回调该接口。而状态模式的主要使用方法,是作为实例变量,通过set属性方法,或者构造器把状态接口的具体实现类的实例传递进来。因此,可以这样比较命令模式和状态模式的异同。

State模式和command模式都是十分常用,粒度比较小的模式,是很多更大型模式的一部分。基本上,state模式和command模式是十分相似的。只要开发者心中对单例和多例有一个清醒的认识,即使不把它们分为两种模式也没事。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Corak reka bentuk yang biasa digunakan dalam PHP dan kaedah pelaksanaannya Corak reka bentuk yang biasa digunakan dalam PHP dan kaedah pelaksanaannya Jun 27, 2023 pm 01:08 PM

PHP adalah bahasa pengaturcaraan yang digunakan secara meluas dan sangat popular. PHP adalah bahagian yang sangat penting dalam aplikasi web hari ini. Corak reka bentuk memainkan peranan penting dalam membangunkan aplikasi PHP. Corak reka bentuk ialah templat untuk menyelesaikan masalah yang boleh digunakan semula dalam persekitaran yang berbeza Ia membantu kami menulis kod yang lebih baik dan menjadikan kod lebih dipercayai, boleh diselenggara dan berskala. Dalam artikel ini, kami akan meneroka beberapa corak reka bentuk yang biasa digunakan dalam PHP dan cara melaksanakannya. Corak Singleton Corak Singleton ialah corak ciptaan yang membolehkan

react中state和props的区别有哪些? react中state和props的区别有哪些? Nov 17, 2020 pm 04:49 PM

区别:props是传递给组件的(类似于函数的形参),而state是在组件内部被组件自己管理的(类似于在一个函数内声明的变量)。state是组件自己管理数据,控制自己的状态,可变;props是外部传入的数据参数,不可变。

Apakah kaedah bertindak balas terhadap perubahan keadaan? Apakah kaedah bertindak balas terhadap perubahan keadaan? Jan 06, 2023 am 09:18 AM

Kaedah untuk bertindak balas untuk menukar keadaan ialah: 1. Ubah suai keadaan melalui kaedah "this.setState({title:'React'});" 2. Ubah suai keadaan melalui kaedah "this.setState((preState, props )=>counter:preState.quantity+ 1)" kaedah untuk mengubah suai keadaan; 3. Tukar keadaan komponen melalui kaedah "replaceState".

Apakah corak reka bentuk dalam php? Apakah corak reka bentuk dalam php? Jul 25, 2023 am 09:39 AM

Corak reka bentuk PHP termasuk: 1. Mod Singleton, yang memastikan bahawa kelas hanya mempunyai satu objek instantiated; 2. Mod kilang, yang merangkumi proses instantiasi objek dalam kelas kilang; Corak kilang untuk mencipta objek; objek; 7. Corak iterator; 8. Corak strategi;

Apakah corak reka bentuk dalam PHP7.0? Apakah corak reka bentuk dalam PHP7.0? May 26, 2023 am 09:21 AM

Dengan perkembangan teknologi yang berterusan, corak reka bentuk menjadi semakin penting dalam pembangunan perisian. Sebagai versi PHP terkini, PHP7.0 juga menyepadukan banyak corak reka bentuk. Dalam artikel ini, kami akan meneroka corak reka bentuk dalam PHP7.0 untuk membantu pengaturcara PHP memahami dan menggunakan corak ini dengan lebih baik. Corak Singleton Corak tunggal ialah corak ciptaan yang memastikan bahawa kelas hanya mempunyai satu contoh dan menyediakan titik capaian global. Dalam PHP7.0, anda boleh menggunakan kaedah __construct dan kaedah statik untuk

Corak dan amalan reka bentuk teras PHP Corak dan amalan reka bentuk teras PHP Nov 08, 2023 pm 08:58 PM

Pengenalan kepada corak dan amalan reka bentuk teras PHP: Corak reka bentuk biasanya digunakan templat penyelesaian masalah dalam pembangunan perisian. Ia menyediakan penyelesaian yang boleh digunakan semula yang boleh membantu kami mengikuti amalan terbaik dan prinsip reka bentuk perisian yang baik semasa proses pembangunan. Sebagai bahasa pengaturcaraan yang digunakan secara meluas, PHP juga mempunyai banyak corak reka bentuk biasa dan berguna yang boleh digunakan dalam pembangunan teras. Artikel ini akan memperkenalkan beberapa corak reka bentuk PHP biasa dan menyediakan contoh kod yang berkaitan. 1. Mod Singleton (Singleton) Mod Singleton adalah jenis yang hanya membenarkan

Penjelasan terperinci tentang cara menggunakan corak reka bentuk dalam rangka kerja PHP Penjelasan terperinci tentang cara menggunakan corak reka bentuk dalam rangka kerja PHP Jun 09, 2023 am 11:55 AM

PHP ialah bahasa pengaturcaraan yang digunakan secara meluas dalam bidang pembangunan web, dan corak reka bentuk adalah kaedah penyelesaian masalah yang digunakan secara meluas dalam kejuruteraan perisian. Aplikasi corak reka bentuk boleh meningkatkan prestasi perisian dalam banyak aspek seperti kebolehskalaan, kebolehselenggaraan dan kebolehgunaan semula, dan boleh menyelesaikan tugas dengan lebih cepat dan mengurangkan pertindihan kod. Dalam PHP, corak reka bentuk sering digunakan untuk meningkatkan prestasi rangka kerja dan mengatur dan mengurus kod dengan lebih baik. Oleh kerana rangka kerja itu perlu mengendalikan sejumlah besar logik perniagaan dan proses perniagaan yang kompleks, corak reka bentuk boleh membantu pembangun

Analisis corak keadaan dalam pengaturcaraan berorientasikan objek PHP Analisis corak keadaan dalam pengaturcaraan berorientasikan objek PHP Aug 13, 2023 pm 01:15 PM

Pengenalan kepada analisis corak keadaan dalam pengaturcaraan berorientasikan objek PHP: Dalam pengaturcaraan berorientasikan objek, corak keadaan ialah corak reka bentuk biasa. Ia membenarkan objek menukar kelakuannya apabila keadaan dalamannya berubah, sambil membuat perubahan ini telus kepada objek luaran. Dalam PHP, corak keadaan boleh digunakan untuk mengendalikan keadaan dan gelagat objek yang berbeza dengan anggun, meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Artikel ini akan memperkenalkan corak keadaan dalam PHP secara terperinci, termasuk definisi dan pelaksanaannya, serta beberapa senario aplikasi biasa. 1. Gambaran keseluruhan model negeri Model negeri ialah a

See all articles