談談你知道的設計模式?請手動實現單例模式,Spring等框架中使用了哪些模式?
典型回答
大致按照模式的應用目標分類,設計模式可以分爲創建型模式、結構型模式和行爲型模式。
- 創建型模式,是對對象創建過程的各種問題和解決方案的總結,包括各種工廠模式(Factory、Abstract Factory)、單例模式(Singleton)、構建器模式(Builder)、原型模
式(ProtoType)。 - 結構型模式,是針對軟件設計結構的總結,關注於類、對象繼承、組合方式的實踐經驗。常見的結構型模式,包括橋接模式(Bridge)、適配器模式(Adapter)、裝飾者模式
(Decorator)、代理模式(Proxy)、組合模式(Composite)、外觀模式(Facade)、享元模式(Flyweight)等。 - 行爲型模式,是從類或對象之間交互、職責劃分等角度總結的模式。比較常見的行爲型模式有策略模式(Strategy)、解釋器模式(Interpreter)、命令模式(Command)、
觀察者模式(Observer)、迭代器模式(Iterator)、模板方法模式(Template Method)、訪問者模式(Visitor)。
Spring等如何在API設計中使用設計模式
- BeanFactory和ApplicationContext應用了工廠模式。
- 在Bean的創建中,Spring也爲不同scope定義的對象,提供了單例和原型等模式實現。
- 在第6講介紹的AOP領域則是使用了代理模式、裝飾器模式、適配器模式等。
- 各種事件監聽器,是觀察者模式的典型應用。
- 類似JdbcTemplate等則是應用了模板模式。