八种设计模式
总结:设计模式之所以存在,是为了在代码中添加相同类型时,仍然不需要修改原有代码,实现封装、继承、多态的高效模式;
php和java的区别:Java可以将写好的接口文件封装成java包。 接口调用时可以随意使用,底层信息无法查看,保证安全。 只有通过文件使用指南才能实现调用; 相反,PHP很快学会了手工编写代码,却只顾一件事而忽略了另一件事,导致用户没有对象设计的一般概念,从而产生冗余文件;
1.简单工厂模式--
组件:工厂角色、抽象产品角色、具体产品角色
根据选择实例化工厂类,然后连接到具体的产品角色,并继承具体产品角色中的抽象产品角色来实现功能;
2.工厂方法模式--
组件:抽象工厂角色、具体工厂角色、抽象产品角色、具体产品角色
与简单工厂不同的是,在工厂方法中,每个具体的产品角色实例直接对应一个具体的工厂实例,实例对象直接传递公共抽象产品角色函数; 这意味着每次新增特定产品时,只需要再次添加对应的工厂角色即可;
3.抽象工厂模式--
组件:抽象工厂角色、具体工厂角色、抽象产品角色、具体产品角色
与工厂方法类似,但是当使用抽象工厂模式时,具体工厂会引用抽象工厂(公共接口)。 当重写该方法时,会实例化多个具体产品,每个具体产品对应其自己的抽象产品。 拥有更广泛的产品组合;
4.单例模式--
也称为 monad 模式,它是一种常见的软件设计模式。 应用这一模式时,单例对象的类必须确保只存在一个实例。
实施技巧:
1、首先使用私有静态变量判断是否创建了唯一的实例;
2、创建一个对外暴露的静态方法,如:(),这是获取实例的唯一接口;
3.为了防止直接new实例化,写函数:(),()------类似防止外键优化
复制对象;
5.观察者模式--
也称为发布/订阅模型; 它将主体与具体的观察者解耦,使得耦合的双方都依赖于抽象而不是具体本身,使得彼此的变化不会影响到其他人。 实现低耦合、非侵入性的通知和更新机制;
6.策略模式--
与简单工厂模式类似,具体区别在于,添加策略模式时,无需修改入口文件。 只需要添加一个策略实现类,然后执行入口文件中的判断即可; 例如:计算器的加减乘除;
7.适配器模式--
新旧模式转换时,如果无法直接使用该模式,则使用适配器代码转换要适配的对象,最后通过调用适配器代码解决问题;
8.桥接模式--
将两个原本不相关的类组合起来,利用两个类中的方法和属性输出一个新的结果,适合两个变化维度非常强的情况;
事实上,桥接模式只是用组合关系替代了继承关系(多重继承),从而降低了系统之间的耦合(解耦抽象和实例化),减少了代码编写量;
面向对象的php五个基本原则