装饰者模式

来源:互联网 发布:淘宝护肤品店铺范文 编辑:程序博客网 时间:2024/06/06 10:56

/**

 * 类的包装器

 * 不改变接口,增加功能

 * @author ruis

 *

 */

//创建一个打印机接口

public interface Printer {

 

void print();

}

//纸张打印机

public class PaperPrinterimplements Printer {

 

@Override

public void print() {

// TODO Auto-generated method stub

System.out.println("Paper Printer");

}

 

}

 

//塑料打印机

public class PlasticPrinter implements Printer {

 

@Override

public void print() {

// TODO Auto-generated method stub

System.out.println("Plastic Printer");

}

 

}

 

//装饰者打印机

public abstract class PrinterDecoratorimplements Printer {

 

//本包中可以使用

protected PrinterdecoratedPrinter;

//形参为装饰者打印机

public PrinterDecorator(Printerd){

this.decoratedPrinter=d;

}

public void print(){

decoratedPrinter.print();

}

 

}

 

//3D打印机继承装饰者打印机功能

public class Printer3Dextends PrinterDecorator {

 

//给3D打印机增加的一个功能 是装饰者打印机

public Printer3D(PrinterdecoratedShape) {

super(decoratedShape);

// TODO Auto-generated constructor stub

}

//3D打印机 装饰者打印机

@Override

public void print(){

System.out.println("3D.");

decoratedPrinter.print();

}

 

}

 

/**

 * 创建一个3D打印机,给3D打印机增加一个打印机功能

 * @author ruis

 *

 */

public class Main {

 

public static void main(String[]args) {

PlasticPrinter plasticPrinter = new PlasticPrinter();

Printer3D plastic3DPrinter =new Printer3D(new PlasticPrinter());

Printer3D paper3DPrinter =new Printer3D(new PaperPrinter());

plasticPrinter.print();

plastic3DPrinter.print();

paper3DPrinter.print();

}

/**

 *  Plastic Printer

3D. Plastic Printer

3D. Paper Printer

 */

}

 

 

 

原创粉丝点击