0
点赞
收藏
分享

微信扫一扫

设计模式——装饰模式

小龟老师 2022-01-20 阅读 58
eclipsejava

Decorate允许向一个现有对象添加动态新功能并且不改变其结构。

  • 作用:动态扩展功能
  • 优点:装饰类和被装饰类可以独立发展,不会耦合。
  • 缺点:多层装饰比较复杂
    例:
    被装饰方抽象角色:

public interface IShape{
	void draw();
}

具体的装饰方实现,可以有多个不同实现类

public class circle implements IShape{
	public void draw(){
		System.out.println("画一个圆!");
	}
}
public class rhombus implements IShape{
	public void draw(){
		System.out.println("画一个菱形!");
	}
}

装饰抽象角色

public abstract class DecorateShape implements IShape{
	private IShape graph;//被装饰对象,即要动态追加功能的对象
	public DecorateShape(IShape graph){
		this.graph = graph;
	}
	public void draw(){
		graph.draw();	
	}
}

具体装饰角色

public class PinkDecorateShape extends DecorateShape(){
	public PinkDecorateShape(IShape graph){
		super(graph);	
	}
	public void draw(){
		System.out.println("用粉色画");
		super.draw();//调用父类被覆盖的方法
	}
}

测试类

public static void main(String[] args){
	IShape circle =new cirlce();//节点流
	IShape graph = new PinkDecorateShape();//过滤流
	graph.draw();
	
	IShape graph1 = new PinkDecorateShape(graph1);
}
举报

相关推荐

0 条评论