外观模式:根据高层的需求,把不通的底层方法,放到不同的类中。
应用:就像烤冷面的不同口味,有酸,甜,辣,三中口味。根据客户需求,甜辣,酸辣,酸甜辣,组装到不同的类中。
sql 语句中也有用到,多表联查时,可以将不同的表写成视图(view)。
缺点:容易造成类爆炸。
//烤冷面总共有三种口味,但是客户不会要全部的口味。
class kaolengmian{
function suan(){echo '酸';}
function tian(){echo '甜';}
function la(){echo '辣';}
}
//不同口味设置成不同类
class _suan{
static function suan(){echo '酸';}
}
class _tian{
static function tian(){echo '甜';}
}
class _la{
static function la(){echo '辣';}
}
//将口味组成不同的组合,打包放好,做的时候直接放。
//酸甜
class st{
function kao(){
_suan::suan();
_tian::tian();
}
}
//酸辣
class sl{
function kao(){
_suan::suan();
_tian::la();
}
}
//酸甜辣
class stl{
function kao(){
_suan::suan();
_tian::tian();
_tian::la();
}
}
//使用时用不同的类
$a = new stl;
数据库视图(view):
create view myview as
select * from testliushui as t
left join `code` as c on (c.codeid='3000' and c.subid=t.depid)
left join `departmet` as d on (d.userid=t.userid)
//下次使用的时候
select * from myview;