Ta có 1 tin nhắn với 2 cách log là ghi ra file và show ra màn hình mỗi cách lại được thực hiện làm 2 kiểu là thực hiện với kết quả là text rõ hoặc text đã được mã hóa.
Message: là 1 lớp trừu tượng khai báo chức năng log
MessageLogger: là 1 interface thực thi chức năng log của Message
ConsoleLogger: thừa kế MessageLogger, có chức năng show message ra console
FileLogger: thừa kế MessageLogger, có chức năng ghi message vào file
TextMessage và EncryptedMessage: thừa kế Message, quyết định xem việc log tin nhắn là text rõ hoặc text đã được mã hóa.
publicclassMainApp{publicstaticvoidmain(String[] args){// chọn log kiểu show ra consoleMessageLogger messageLogger =newConsoleLogger();// chọn cách thức hiển thị kiểu mã hóaMessage message1 =newEncryptedMessage(messageLogger);// chọn cách thức hiển thị kiểu text rõMessage message2 =newTextMessage(messageLogger);// thực thi phương thức log message1.log("stackjava.com"); message2.log("stackjava.com");}}