Java設計模式之裝飾者模式詳解

裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬於結構型模式,它是作為現有的類的一個包裝。

以一個Person對象為例。Person作為一個接口,Student(學生)和Doctor(醫生)為Person接口的兩個具體類,DecoratorPerson為Person的裝飾類,可對具體類進行裝飾。ShoeDecorator(鞋子裝飾類)和DressDecorator(衣服裝飾類)為具體的裝飾類。這個案例可對學生和醫生進行裝飾。

具體代碼:

Person:

public interface Person {
   void description();    
}

Student:

public class Student implements Person {
	@Override
	public void description() {
		System.out.println("學生");
	}
}

Doctor:

public class Doctor implements Person {
	@Override
	public void description() {
		System.out.println("醫生");
	}
}

DecoratePerson:

public class DecoratePerson implements Person {
	private Person person;
	public DecoratePerson(Person person) {
		this.person = person;
	}
	@Override
	public void description() {
		person.description();
	}
}

ShoeDecorate:

public class ShoeDecorate extends DecoratePerson  {
	public ShoeDecorate(Person person) {
		super(person);
	}
	@Override
	public void description() {
		super.description();
		System.out.println("穿鞋子");
	}
}

DressDecorate:

public class DressDecorate extends DecoratePerson  {
	public DressDecorate(Person person) {
		super(person);
	}
	@Override
	public void description() {
		super.description();
		System.out.println("穿衣服");
	}
}

測試類:根據裝飾的順序和對象不同,呈現不同的結果和順序

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: