设计模式-装饰者模式

来源:互联网 发布:mendelow矩阵分析 编辑:程序博客网 时间:2024/04/27 22:22

Java的I/O各种类就是典型的装饰者模式.

以下是一个洗衣机的装饰者实现:

java代码:

package com.liu.pattern10;public class TestDecorator {public static void main(String[] args) {// TODO Auto-generated method stubWasher washer = new Washer(); WasherDecorator decorator = new ZNWahser(new GTWahser(washer));decorator.wash();}}interface IWasher{public void wash();}abstract class WasherDecorator implements IWasher{private IWasher washer;public WasherDecorator(IWasher washer){this.washer = washer;}public void wash(){washer.wash();}}class GTWahser extends WasherDecorator{public GTWahser(IWasher washer) {super(washer);// TODO Auto-generated constructor stub}public void addWater(){System.out.println("加水");}public void wash(){super.wash();addWater();}}class ZNWahser extends WasherDecorator{public ZNWahser(IWasher washer) {super(washer);// TODO Auto-generated constructor stub}public void test(){System.out.println("智能");}public void wash(){super.wash();test();}}class Washer implements IWasher{@Overridepublic void wash() {System.out.println("洗衣服");}}


 

c#代码

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace com.liu.pattern10{    class TestDecorator    {        static void Main(string[] args)        {            Washer washer = new Washer();            WasherDecorator decorator = new ZNWahser(new GTWahser(washer));            decorator.Wash();            System.Console.ReadKey();        }    }    interface IWasher{    void Wash();    }    abstract class WasherDecorator : IWasher{    private IWasher washer;    public WasherDecorator(IWasher washer){    this.washer = washer;    }    public virtual void Wash(){    washer.Wash();    }    }    class GTWahser : WasherDecorator{    public GTWahser(IWasher washer):base(washer) {    }    public void AddWater(){    System.Console.WriteLine("加水");    }    public override void Wash(){    base.Wash();    AddWater();    }    }    class ZNWahser : WasherDecorator{    public ZNWahser(IWasher washer):base(washer) {    }    public void Test(){    System.Console.WriteLine("智能");    }        public override void Wash()        {    base.Wash();    Test();    }    }class Washer : IWasher{public void Wash() {        System.Console.WriteLine("洗衣服");}}}


 

0 0
原创粉丝点击