10.27 开课一个月零二十三天(设计模式)

<?php

//面向对象的三大特性
//封装:
//目的:为了让类更安全
//做法:将成员变量变为私有,做一个方法来间接操作成员变量,在方法里面加限制条件

//继承:
//子类可以继承父类的一切
//特点:单继承,一个子类只能有一个父类

//多态:
//当父类引用指向子类实例,由于子类对父类的方法进行了重写,使用父类引用去调用该方法的时候表现出的不同状态

//静态:
//静态的成员是属于类的
//普通成员是属于对象的

//抽象类
//不能被实例化

//接口
//关键字:interface

//加载类:
//include("./Ren.class.php");
//include "./Ren.class.php";

//require("./Ren.class.php");
//require "./Ren.class.php";

//require_once("./Ren.class.php");
//require_once "./Ren.class.php";

//自动加载类的方法
//所有的类文件要放在同一个目录下
//所有类文件的命名规则一致

function __autoload($classname)
{
	require $classname.".class.php";
}

$r = new Ren();

//设计模式
//1.单例模式
//类的计划生育
//1.让该类在外界无法造对象
//2.让外界可以造一个对象,做一个静态方法返回对象
//3.在类里面通过静态变量控制返回对象只能是一个

class Dog
{
	static $dx;
	public $test;

	private function __construct()
	{

	}

	static function DuiXiang()
	{
		//return new Dog();

		if(empty(self::$dx))
		{
			self::$dx = new Dog();
		}

		return self::$dx;
	}
}

$a = Dog::DuiXiang();

$b = Dog::DuiXiang();
$b->test="hello";

var_dump($a);

//工厂模式
class YunSuan
{
	public $a;
	public $b;

	function Jia()
	{
		return $a+$b;
	}
	function Jian()
	{
		return $a-$b;
	}
}

abstract class YuanSuan
{
	public $a;
	public $b;

	function Suan()
	{
	}
}

class Jia extends YuanSuan
{
	function Suan()
	{
		return $this->a+$this->b;
	}
}

class Jian extends YuanSuan
{
	function Suan()
	{
		return $this->a-$this->b;
	}
}

class Cheng extends YuanSuan
{
	function Suan()
	{
		return $this->a*$this->b;
	}
}

$j = new Cheng();
$j->Suan();

class GongChang
{
	static function ShengChan($f)
	{
		switch($f)
		{
			case "+":
				return new Jia();
				break;
			case "-":
				return new Jian();
				break;
			case "*":
				return new Cheng();
				break;
		}
	}
}

$r = GongChang::ShengChan("*");
$r->a=10;
$r->b=5;
echo $r->Suan();

?>
时间: 2024-10-24 14:06:23

10.27 开课一个月零二十三天(设计模式)的相关文章

10.28 (上午) 开课一个月零二十四天 (数据访问)

<?php //建一个连接,造一个连接对象 $db = new MySQLi("localhost","root","123","mydb"); //判断是否出错 if(mysqli_connect_error()) { echo "连接失败!"; exit; } mysqli_connect_error()?die("连接失败"):""; //写SQL语句 $

10.17 (上午)开课一个月零十三天 (数据库查询)

1.范围查找 select * from 表名 where price>40 and price<80 select * from 表名 where price between 40 and 80 2.离散查询 select * from 表名 where price=30 or price=50 select * from 表名 where price in(30,40,50) select * from 表名 where price not in(30,40,50) 3.聚合函数(统计查询

10.16 (下午)开课一个月零十二天 (增删改查)

1.注释语法:--,# 2.后缀是.sql的文件是数据库查询文件 3.保存查询 4.在数据库里面 列有个名字叫字段   行有个名字叫记录 CRUD操作: create 创建(添加) read 读取 update 修改 delete 删除 1.添加数据 insert into Info values('','',1,'','') ; 给特定的列添加数据 insert into Info (code,name) values('',''); 自增长列的处理 insert into family va

10.25 (下午) 开课一个月零二十一天(抽象)

//继承 //子类可以继承父类的一切 //特点:单继承 //函数的重写 //多态 //当父类引用指向子类实例,由于子类对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同 //如果一个方法需要一个父类的参数,可以给一个子类对象 //静态 //普通成员 //普通成员是属于对象的 //静态成员 //静态成员属于类的 //关键字:static //self关键字:在类里面代表该类 //在静态方法里面不能调用普通成员 //在普通方法里面能够调用静态成员 class FenBi { public

10.25 (上午) 开课一个月零二十一天 (继承多态)

//面对对象三大特性 //封装 //目的:让类更安全 //做法:成员变量变为私有的,通过方法来间接操作成员变量,在方法里面加限制条件 //继承 //概念:子类可以继承父类的一切 //方法重写:在子类里面对父类的方法进行重写 //特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类 //override:重写 //overload:重载,编译多态 class Ren { public $name; function say() { echo $this->name."正在讲话!&

二十三种设计模式——工厂模式

二十三种设计模式--工厂模式 简单工厂模式 简单工厂模式又称静态工厂方法(StaticFactory Method)模式,不属于23种模式之一. 简单工厂模式是工厂模式最简单使用的模式. 类图: 程序: #include <iostream> #include<string> using namespace std; class NationalFlag//父类 { public: NationalFlag(){} ~NationalFlag(){} virtual void di

二十三种设计模式及其python实现

本文源码寄方于github:https://github.com/w392807287/Design_pattern_of_python 参考文献: <大话设计模式>——吴强 <Python设计模式>——pythontip.com <23种设计模式>——http://www.cnblogs.com/beijiguangyong/ 设计模式是什么? 设计模式是经过总结.优化的,对我们经常会碰到的一些编程问题的可重用解决方案.一个设计模式并不像一个类或一个库那样能够直接作用

来自转载小任猿博客 二十三个设计模式导图

创建型 1. Factory Method(工厂方法) 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method 使一个类的实例化延迟到其子类. 适用性: 当一个类不知道它所必须创建的对象的类的时候. 当一个类希望由它的子类来指定它所创建的对象的时候. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候. 2. Abstract Factory(抽象工厂) 意图: 提供一个创建一系列相关或相互依赖对象的接口,

二十三种设计模式之原型模式的C#实现

原型模式就是通过拷贝快速创建一个新的对象 本例UML如图 ColorBase [Serializable] public abstract class ColorBase { public int R = 0; public int G = 0; public int B = 0; public virtual ColorBase Clone() { return this; } public virtual void ShowMe() { Console.WriteLine(string.Fo