导航:首页 > 编程语言 > facade设计模式php

facade设计模式php

发布时间:2023-03-02 03:46:42

‘壹’ 什么是设计模式,在实际编程中应该如何应用它

这类“标准”问题更适合自己看书和搜索网络站点。

http://zh.wikipedia.org/wiki/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F_%28%E8%AE%A1%E7%AE%97%E6%9C%BA%29 (中文维基)
http://proct.china-pub.com/215701 (最有名的书;有点难读,适合参考和回味)

‘贰’ 各位,23种设计模式都在哪些场合运用到

其中创建型有:
一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点
例如:随处可见,比如Servlet,sprigMVC创建时都是单例多线程的。
完美的实例是:private static Singleton instance = new Singleton();
创建线程的方式有很多种,但是很多都扛不住多线程的检验,上面是简单又实用的例子,多线程下也是安全的。

二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。
例如:虽然简单工厂(静态工厂)没有进入23种设计模式,但是java web中的很多配置文件玩的还是它。
Spring中下面三种方式实例化bean:
1.使用类构造器实例化
<bean id="orderService" class="cn.itcast.OrderServiceBean"/>
2.使用静态工厂方法实例化
<bean id="personService" class="cn.itcast.service.OrderFactory" factory- method="createOrder"/>
public class OrderFactory {
public static OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
3.使用实例工厂方法实例化:
<bean id="personServiceFactory" class="cn.itcast.service.OrderFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createOrder"/>
public class OrderFactory {
public OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
第一种方法,IOC容易直接根据配置文件中的class属性通过反射创建一个实例,使用的是该类的默认构造方法。第二种则是调用class指定的工厂类的
工厂方法,来返回一个相应的bean实例,值得注意的是工厂类的方法是静态方法,所以不用产生工厂本身的实例。而第三种则不同,它除了配置与第二种相同
外,唯一的不同就是方法不是静态的,所以创建bean的实例对象时需要先生成工厂类的实例。实例了bean对象时,需要对其中的属性也进行赋值,这时就是经常被提及的依赖注入。
以上其实有错误:Spring很多情况下创建对象很定是反射呀,尤其是注解和DI(依赖注入),小朋友,想什么呢?肯定不是用new()来创建:
Class c = Class.forName("cn.itcast.OrderServiceBean");
Object bean = c.newInstance();

四、Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。

五、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。

行为型有:
六、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。
例如:jdk中的各种容器类的基础模式

七、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。
例如:据说是jdk使用最多的模式,好比邮件订阅或RSS订阅

八、Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。

九、Command,命令模式:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。

十、State,状态模式:允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。

十一、Strategy,策略模式:定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。
例如:comparator 比较器的实现利用了此模式

十二、China of Responsibility,职责链模式:使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系 。
此处强调一点就是,链接上的请求可以是一条链,可以是一个树,还可以是一个环,模式本身不约束这个,需要我们自己去实现,同时,在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象
例如:struts2 interceptor 用到的就是是责任链模式

十三、Mediator,中介者模式:用一个中介对象封装一些列的对象交互。

十四、Visitor,访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这个元素的新操作。

十五、Interpreter,解释器模式:给定一个语言,定义他的文法的一个表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

十六、Memento,备忘录模式:在不破坏对象的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

结构型有:
十七、Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性。

十八、Facade,外观模式:为子系统中的一组接口提供一致的界面,facade提供了一高层接口,这个接口使得子系统更容易使用。

十九、Proxy,代理模式:为其他对象提供一种代理以控制对这个对象的访问。
例如:经典的体现在Spring AOP切面中,Spring中利用了俩种代理类型。
其实,代理也分为静态和动态,但是我们一般常用动态,因为静态代理秀不起来

二十、Adapter,适配器模式:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。
其中对象的适配器模式是各种结构型模式的起源,分为三种:类,对象,接口的适配器模式。
结一下三种适配器模式的应用场景:
类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。
对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Wrapper类,持有原类的一个实例,在Wrapper类的方法中,调用实例的方法就行。
接口的适配器模式:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Wrapper,实现所有方法,我们写别的类的时候,继承抽象类即可。
例如:java io流中大量使用

二十一、Decrator,装饰模式:动态地给一个对象增加一些额外的职责,就增加的功能来说,Decorator模式相比生成子类更加灵活。
对比:适配器模式主要是为了接口的转换,而装饰者模式关注的是通过组合来动态的为被装饰者注入新的功能或行为(即所谓的责任)。

二十二、Bridge,桥模式:将抽象部分与它的实现部分相分离,使他们可以独立的变化。

二十三、Flyweight,享元模式:主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。
例如:数据库连接池便是这个原理

‘叁’ 开发中都用到了那些设计模式用在什么场合

我用的多的是:
singleton:单例,用来减少垃圾对象和缓存用
factory:工厂模式,用来解耦(呵呵,其实模式都是用来解耦的)
facade和decorator:封装接口
command:命令模式,传递
Iterator:用来遍历对象
Observer:用来监听状态变化(现在习惯用listener机制替代)
templete:模板模式,用来处理相同的操作步骤
strategy:策略模式,策略选择
proxy:用来附加功能,属性或隐蔽。
bridge也很实用,用来解耦工厂与产品搭配之类的选择

‘肆’ 你熟悉的设计模式有哪些写出单例模式的实现代码

23个设计模式:

根据目的设计模式可以分为创造模式,结构模式和行为模式,创建模式用于处理对象的创建。结构模式用于处理类或对象的组合。

行为模式用于描述类或对象如何交互以及如何分配职责,创建模式用于处理对象的创建。主要包括以下五种设计模式:

工厂方法模式()

抽象工厂模式(AbstractFactoryPattern)

建造者模式(BuilderPattern)

原型模式(PrototypePattern)

单例模式(SingletonPattern)

结构模式用于处理类或对象的组合,包括以下七个设计模式:

适配器模式(AdapterPattern)

桥接模式(BridgePattern)

组合模式(CompositePattern)

装饰者模式(DecoratorPattern)

外观模式(FacadePattern)

享元模式(FlyweightPattern)

代理模式(ProxyPattern)

行为模式描述类或对象如何交互以及它们如何分配职责。它由以下11种设计模式组成:

责任链模式(Chain的ResponsibilityPattern)

命令模式(CommandPattern)

解释器模式(InterpreterPattern)

迭代器模式(IteratorPattern)

中介者模式(MediatorPattern)

备忘录模式(MementoPattern)

观察者模式(ObserverPattern)

状态模式(StatePattern)

策略模式(StrategyPattern)

模板方法模式(TemplateMethodPattern)

访问者模式(VisitorPattern)

单例模式实现1:

公共类Singleton{

类共享实例对象

私有静态单例;单例=零;

//私有构造函数

私有Singleton(){

系统。出去了。这是单例!!);

//获取单例方法

公共同步静态单例getInstance(){

//确定共享对象是否为空,如何空一个新对象

If(singleton==null){

singleton=newsingleton();

返回单例。

单例模式实现2:

公共类Singleton{

类共享实例对象实例化

=newSingleton();

//私有构造函数

私有Singleton(){

系统:出去了,这是单例!!);

//获取单例方法

公共静态单例getInstance(){

直接返回共享对象

返回单例。

(4)facade设计模式php扩展阅读:

注意事项:

设计模式主要分三个类型:创建型和行为型。

Singleton:确保一个类只有一个实例,并为其提供一个全局访问点

AbstractFactory:提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。

FactoryMethod:定义一个用于创建对象的接口,并让子类决定实例化哪个类。工厂方法将类的实例化延迟到子类。

Builder:将复杂对象的构造与其表示分离,使相同的构造过程可以创建不同的表示。

Prototype:指定要使用Prototype实例创建的对象的类型,并复制该原型来创建一个新对象。

Composite:将对象组合成树状结构,以表示整体各部分之间的关系。组合使用户一致地使用单个对象和组合对象。

Facade:为子系统fa中的一组接口提供一致的接口。Ade提供了一个高级接口,使子系统更易于使用。

Proxy:为其他对象提供一个代理,以控制对该对象的访问

Adapter:将一个接口类转换为客户想要的另一个接口类。适配器模式使那些由于接口不兼容而无法一起工作的类一起工作。

Decrator:式比子类化更灵活,可以为对象动态添加一些额外的职责。

Bridge:模式将抽象部分与其实现部分分离,以便它们可以独立地更改。

Flyweight:享元模式

阅读全文

与facade设计模式php相关的资料

热点内容
安卓手机为什么没有桌面插件 浏览:346
鼎新app是什么 浏览:113
程序员和施工员哪个有前途 浏览:614
浙江百兆服务器云空间 浏览:827
php和html5学哪个比较好 浏览:388
瑜伽pdf下载地址 浏览:252
小花猫app改名叫什么 浏览:837
编程器固件修改 浏览:523
沈阳技校有程序员吗 浏览:300
各行app的基金有什么不一样吗 浏览:62
python编译器怎么装 浏览:73
新浪php笔试题 浏览:138
新时达服务器如何自学习 浏览:27
程序中什么命令用来输入单字符 浏览:59
php是否有数据 浏览:141
虚拟云服务器是什么意思 浏览:279
vb是编译性语言吗 浏览:209
json格式用什么编译器 浏览:319
word转pdf代码 浏览:802
单片机中如何编程 浏览:739