Java裝飾模式和適配器模式是兩種常用的軟件設計模式,它們各自有著不同的應用場景和實現方式。
裝飾模式是一種結構型模式,它可以在不改變原有對象的結構和功能的基礎上,動態地給對象添加新的功能。這種模式的核心在于定義一個接口,該接口可以被裝飾器和被裝飾對象共同實現,并且裝飾器可以在不影響被裝飾對象的前提下來增強其功能。
public interface IPerson { void introduce(); } public class Student implements IPerson { public void introduce() { System.out.println("I am a student."); } } public abstract class PersonDecorator implements IPerson { protected IPerson person; public PersonDecorator(IPerson person) { this.person = person; } public void introduce() { person.introduce(); } } public class SportsDecorator extends PersonDecorator { public SportsDecorator(IPerson person) { super(person); } public void introduce() { super.introduce(); System.out.println("I like sports."); } } public static void main(String[] args) { IPerson student = new Student(); IPerson studentWithSportHobby = new SportsDecorator(student); studentWithSportHobby.introduce(); }
適配器模式也是一種結構型模式,它的主要作用是將一個接口轉換為另一個接口,從而實現不同接口之間的兼容性。適配器通常在系統需要使用某些已有的類,但這些類與系統接口不兼容時使用。
public interface ILogger { void info(String msg); } public class Log4jLogger { private Logger logger; public Log4jLogger(String name) { logger = Logger.getLogger(name); } public void log(String msg) { logger.info(msg); } } public class AdapterLogger implements ILogger { private Log4jLogger log4jLogger; public AdapterLogger(Log4jLogger log4jLogger) { this.log4jLogger = log4jLogger; } public void info(String msg) { log4jLogger.log(msg); } } public static void main(String[] args) { ILogger logger = new AdapterLogger(new Log4jLogger("myLogger")); logger.info("Hello World!"); }
總之,裝飾模式和適配器模式都是很實用的軟件設計模式,可以幫助我們編寫更加靈活和可維護的代碼。
上一篇python的頁面設計
下一篇css圖片浮在文字中間