设计模式(7) bridge模式
目的
抽象部分和实现部分分离,各自独立的变化。
优点
分离接口及其实现部分
提高可扩充性
实现细节对客户端透明
实现
abstract class Abstration{
protected $imp;
public function operation(){
$this->imp->operationImp();
}
}
class RefinedAbstration extends Abstration{
function __construct(Implementor $imp){
$this->imp = $imp;
}
}
abst...
设计模式(6) adapter模式
目的
将类的接口转换成客户希望的另外一个接口。分为类适配器和对象适配器。
类适配器需要借助多继承,对象适配器只是将继承关系改为引用。
代码
php和java均不支持多继承,所以示例代码以对象适配器来。
//需要的接口定义
interface Target{
public function method();
}
//已经存在的类
class Adaptee{
public function method2(){
echo "hello";
}
}
//将method2转化成method
class Apapter implements Target {
private $adaptee;
public function __constru...
pacman常用命令
Pacman是Arch Linux 的包管理器。它将一个简单的二进制包格式和易用的构建系统结合了起来。不管软件包是来自官方的 Arch 库还是用户自己创建,Pacman 都能方便得管理。
更新系统
在 Archlinux 中,使用一条命令即可对整个系统进行更新:
pacman -Syu
如果你已经使用pacman -Sy将本地的包数据库与远程的仓库进行了同步,也可以只执行:pacman -Su
安装包
➔ pacman -S 包名:例如,执行 pacman -S firefox 将安装 Firefox。你也可以同时安装多个包,
只需以空格分隔包名即可。
➔ pacman -Sy 包名:与上面命令不同的是,该命令将在同步包数据库后再执行安装。
➔...
设计模式(5) prototype模式
目的
用原型实例来指定创建对象的种类,通过拷贝这些原型创建新的对象。
适用性
系统独立与产品创建、构成和表示
实例化的类在运行时刻指定时,例如:动态加载
避免创建一个与产品类层次平行的工厂类层次
一个类的实例只能有几个不同的状态组合中的一种
interface Product {
}
class Factory {
private $product;
public function __construct(Product $product) {
$this->product = $product;
}
public function getProduct...
设计模式(4) 工厂方法模式
创建型模式
Factory (对象创建型)
目的
定义一个用于创建对象的接口,让子类决定实例哪个类,类的实例延迟到其子类。
额外效果
1.为子类提够挂钩
2.连接平行类的层次
实现
方式
基类实现具体的创建函数,子类继承扩展
基类抽象创建函数,子类去实现
利用参数,创建对象 (简单工厂模式)
abstract class Product {
abstract function getName();
}
abstract class Factory {
abstract function create();
}
/**产品A**/
class ProductA extends Product{
func...
设计模式(3)
创建型模式
Builder (对象创建型)
目的
将复杂对象的构建与他的表示分离,使得同样的构建过程创建不同的表示。
适用场景
1.当创建复杂对象的算法应当独立于该对象的组成部分以及他们的装配方式
2.构造过程必须允许被构造的对象不同的表示
class Product{
function getName(){
echo "hello";
}
}
class ProductA extends Product{
function getName(){
echo "ProductA";
}
}
class ProductB extends Product{
function getName()...
设计模式(2)
创建型模式
1.抽象工厂模式
目的
提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它的具体类。
适用性
一个系统独立于他的产品创建、组合和表示时
一个系统要由多个产品系统列中的一个来配置
强调一系列相关产品对象设计以便用于联合使用
提供一个产品类库,而只想显示他的接口而不是设计
类图关系
泛化: 继承
实现: 接口实现
依赖: 具有使用关系,相识关系,只有在特定的地方(某个方法内)才有关系
关联: 类与类或者接口之间依赖关系,拥有关系
聚合: 关联的特殊情况,弱拥有关系
组合: 关联的特殊情况,强拥有关系
abstract class Product{
public function sayHello(){
echo "h...
设计模式(1)
作用
面向对象程序由对象构成,对象包括数据和对数据操作的过程,过程即为方法和操作。用户请求是对象执行操作的唯一方法,操作又是改变对象内部数据的唯一方法。
寻找合适的对象
决定对象的粒度
指明对象的接口
型构:对象申明的每个操作指定的操作名、作为参数的对象和返回值。对象操作所定义的所有操作型构称为接口(就是所有方法定义集合)。对象接口描述了对象所能接收的全部请求的集合,
任何匹配对象型构的请求都将发送给该对象。
类型:特定接口的名字
在面向对象的世界里接口是基本组成,对象只有通过接口才能和外界交流。
描述对象的实现
混入类: 给其他类提供可以选择的接口或者功能,多继承。
对象类型只与接口有关,接口即与他能响应的请求的集合。
66 post articles, 9 pages.