| 网站首页 | 技术文章 | 下载频道 | 博客 | 编程论坛 |
 
| 技术教程首页 | 开发语言 | WEB开发 | .NET技术 | 数据库 | 操作系统 | 网页制作 |
 
 
您现在的位置: 编程中国 >> 技术教程 >> .NET技术 >> C# >> C#技术资料 >> 正文
  ►  装饰者模式与外观者模式的区别
装饰者模式与外观者模式的区别
作者:witer    阅读人次:……    文章来源:本站原创    发布时间:2008/6/22    网友评论()条
 

原帖及讨论:http://bbs.bccn.net/thread-216717-1-1.html

很久没有来这一个论坛里了,一上来就看到很多关于设计模式的贴子上了精,今天我也来谈一下设计模式,我现在所介绍的是一个外观模式,和装饰者模式,这两者在初学设计模式的人面前可能是一样也,就算是高手,也有时会搞不清楚到底两者的区为何在!
好废话少说了,先来说说外观模式,
外观模式,故明思意,就是只看外表,在我们的代码中实际代码中,就是对一系列操作进行封装,并对外提供一个接口,在我们现实生活中,HIFI对大家来说应该不陌生了现在就用一个HIFI的例子来给大家说明
public interface IHIFI{
    
    public void hifiOpen();
}

public class HIFI implements IHIFI{

    public void hifiOpen(){
        Integration integration=new Integration();
        integration.integrationSound1();
        integration.integrationSound1();
    }
}

public class Integration{

    public void integrationSound1(){
    //any code
    }

    public void integrationSound2(){
    //any code
    }
}

public class MainApp{

    public static void main(String args[]){
        IHIFI hifi=new HIFI();
        hifi.hifiOpen();
    }
}

前景说明,在玩HIFI的人中,有很多人都是高手,我知道,他们喜欢自己去调里在的每一个音效,这样子可以达到更好的视听效果,但是我们要想像一下,并不是每一个玩HIFI的都是高手,有的人就是喜欢玩HIFI但是他就是不会调音怎么办,这时我们会提供一个接口IHIFI给他,他只要调用hifiOpen方法就OK了,这样子就不用去像高手那样一个一个接口去调(integrationSound1 integrationSound2)这样可以大大的为傻瓜的用户去听音乐,这就是一个标准的外观模式(把一系列的操作在一个逻辑层上编写,这样子一方便可以更好的隐藏内部机制的实现,又可以使得维护业务逻辑的人更加清晰)

装饰者模式
装饰者听名字就知道他是对某个东西进行装饰,但是外观听上去也是对某个东西的外表进行装饰封装?那他们之间到底是有什么区别呢?
区别如下:外观是对一系例的接口进行封装,而装饰都模式,是某样东西进行内容的附加,从而得到新的东西,在我们的JAVA中STREAM就是一个很成功的装饰者模式的应用现在,我举一个麦当劳的例子来给大家说明一下什么是装饰者模式。

public void Hamburger{
    
    private int price=3;

    public int getPrice(){
        return price;
    }
}

public void ChickenHamburger extend Hamburger{
    public int getPrice(){
        super().getPrice()+3;
    }
}

public void BeefHamburger extend Hamburger{
    public int getPrice(){
        super().getPrice()+4;
    }
}

public void hotChickenHamburger extend ChickenHamburger {

    public int getPrice(){
        super().getPrice()+4;
    }
}

从上面的代码里面看,我的根是汉堡!当我的汉堡每加一样财料(对汉堡进行装饰)的时候,我们就可以发现汉堡的价钱就向上涨了这就是装饰者模式,当每做一件事情的时候是在别一件事情的基础上进行一个扩展,它是继承的一种特例!
好啦时间差不多了今天说到这,希望这些东西对大家对设计模式的理解会有更深一层的意议.

 

 
文章录入:静夜思    责任编辑:静夜思 
  • 上一篇文章:

  • 下一篇文章:

  •  
    相关文章
    没有相关文章
    原创地带
    24小时热门帖子