`
bardo
  • 浏览: 371644 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11594
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:9970
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9326
社区版块
存档分类
最新评论

设计模式应用浅述(二)

阅读更多

二、结构型模式——类与方法的调用控制问题

 

    结构型模式根本点是处理调用与控制。请注意“总结”这个标签中的说明。这一部分不会因为我们在写代码时,需要将什么当成变量处理时,会想到什么模式,所以,这一部分是需要细心领会的。只有对此有足够了解时,才能写出松耦合的代码。


    Adapter(适配器):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    实现方式:创建一个Adapter,对构造函数传入的类作为实际操作类。Adapter通过代码对操作类各个方法的调用,实现调用方所需要的方法。
    总结:通过将目标对象作为参数传给Adapter,通过Adapter向调用方提供所需要的接口。
    选择模式:方法与代码的组合。方法调用的一致性。本地使用唯一方法调用,外部实现代码配合

 

    Bridge(桥接):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
    实现方式:Bridge对象通过父类的构造函数获得参数后,通过聚合参数中指定的类,同时创建对应的拥有相关方法的子类,从而在聚合的类与相关子类之间架设了一座桥。
    总结:通过构造函数中的参数实现子类与另一类的组合。
    选择模式:类与类的组合。多层继承会产生一个迪卡尔积的类,这样类太多了。如果只是组合,则Bridge实现了二维到多维的选择。


    Composite(组合):将对象组合成树型结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
    实现方式:单个模式的对象与复合对象(其中数量有多个)均继承同一的抽象类,实现完全相同的接口。
    总结:将复数与单数类一致起来
    选择模式:单数与复数的一致性。在选择时无需再区分复数还是单数。


    Decorator(装饰):动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活。
    实现方式:新的Decorator类把原来的类作为属性,并增加所需的方法。
    总结:将原来的子类与新方法组合起来,实现多对多组合。
    选择模式:子类与方法的组合

 

    Facade:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
    实现方式:用一个类抽象出对某一子系统部分的操作,并实现相关的代码。
    总结:合并固定的一组操作到前置的类中。
    选择模式:不同类的不同方法选择,并组合成代码,成为Facade类的方法。


    Flyweight(享元):运用共享技术有效地支持大量细粒度的对象。
    实现方式:需要一个享元工厂管理共享的资源,把所有共享的资源的生产全部交给个享元工厂。其中包括保存细粒度对象的属性(数组类型),以及获取细粒度对象的方法,通常是工厂方法。
    总结:做一个对象的存储器。
    选择模式:从大量共享对象中选择。统一选择接口。


    Proxy:为其他对象提供一个代理以控制对这个对象的访问。
    实现方式:在实际要使用的类“前端”再加一个类,用以完成相关的控制。
    总结:对类方法调用增加前置预处理。成为中转代理类。
    选择模式:对调用进行选择与控制。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics