怎样才能开发出好的软件(四)

       怎样才能开发出好的软件(三)已经介绍了创建型模式,这一节就看一下结构型模式。

        首先结构型模式有:适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。

        下面一一介绍:

适配器模式:

       这个设计模式是将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。这种情况一般出现在开发后期或者维护阶段,在设计阶段还是需要把接口设计的一致的,当然使用第三方控件的时候也会考虑使用适配器模式。

桥接模式:

 

       桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立的变化。它的优点是:把多种方式的实现独立出来,让它们各自的变化,每种实现的变化都不会影响其他实现,从而达到应对变化的目的。当我们需要多角度去分类实现对象是只用继承会造成大量的类增加,不能满足开放-封闭原则时就要考虑使用桥接模式了。

组合模式:

       它将对象组合成树形结构以表示“部分-整体”的层次结构。使得用户对单个对象和组合对象的使用具有一致性。简单来说就是使用了组合模式你可以让多个公司任意隶属组合,比如我首先设立一个总公司,总公司下设立财务部、人力资源部,还有北京分公司、上海分公司,北京分公司和上海分公司下面还设立财务部和人力资源部,就是这样的一层一层的隶属关系。这样说来财务部和人力资源部都算是叶节点,具体公司算是枝节点,具体公司下可以再设置枝节点或叶节点。那什么时候使用组合模式呢?当你发现需求只用是体现部分与整体层次的结构时,以及希望用户可以忽略组合对象与单个对象的不同,统一的使用组合模式结构中的所有对象时,就应该考虑使用组合模式了。比如:ASP.net中的TreeView控件就是组合模式的应用。

装饰模式:

       装饰模式可以动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。说白了装饰模式就是一层一层包装的过程,每个装饰对象只需要知道怎么包装,至于先包装哪一层是不需要知道的。它主要用在对已有功能动态的添加更多功能。

外观模式:

        外观模式为子系统中的一组接口提供一个一致的界面,它定义了一个高层接口,这个接口使得这一子系统更加容易使用。通俗讲就是复杂的子系统提供出一个简单的接口,具体子系统内部是怎么操作的根本不需要外界知道,这样就减少了外界与这个子系统的依赖。在开发初期阶段要有意识的将两个层分离,在层与层之间建立外观。在维护一个遗留的大系统时,新的开发需求必须要依赖他,此时可以为新系统开发一个外观类,来提供设计粗糙或高度复杂的遗留代码的比较清晰的接口,让新系统与外观对象交互,外观对象与遗留代码交互所有的复杂工作。

享元模式:

       享元模式是运用共享技术有效的支持大量细粒度的对象。简单来说,实例化的对象越多占用的内存也就越多,当存在大量重复的对象时,那就是资源的极大浪费,使机器性能减慢,享元模式就解决了这样的问题,让相同的对象共享同一个对象,这样就可以节约大量内存。

代理模式:

 

       代理模式是为其他对象提供一种代理以控制对这个对象的访问。通俗讲就好像是秘书与老板,老板需要什么只需要告诉秘书,秘书负责去办老板的事,这样真正与外界打交道的是秘书,而不是老板,这样就起到了一定的隔离作用。那一般都用在什么场合呢?首先可用在远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。第二种应用是虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化很长时间的真实对象(比如说打开一个很大的HTML网页,里面可能有很多文字和图片,文字可以很快就能看到,但是图片要一张一张的下载,那些未打开的图片框就是通过虚拟代理来替代了真实的图片,此时代理存储了真实图的路径和尺寸,这样可以优化下载)。第三种是安全代理,用来控制真实对象访问时的权限,一般用于对象有不同访问权限的时候。还有一种是只能索引,当调用真实对象的时候,代理处理另外一些事。

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值