每个开发者都必须掌握哪些设计模式?
我对Java Web开发人员使用Spring和Hibernate的情境感兴趣。我经常听说深入了解设计模式在使用这些框架时非常重要。有人可以列出具体的内容吗?
例如,我知道理解抽象工厂、工厂模式、单例模式等是绝对必要的。我正在寻找一个全面的列表。
每个开发者都必须掌握哪些设计模式?
我对Java Web开发人员使用Spring和Hibernate的情境感兴趣。我经常听说深入了解设计模式在使用这些框架时非常重要。有人可以列出具体的内容吗?
例如,我知道理解抽象工厂、工厂模式、单例模式等是绝对必要的。我正在寻找一个全面的列表。
如果你要设计解耦合系统,就需要知道如何正确地链接类之间的依赖关系。
特别是在Java中,由于语言本身缺少闭包和函数指针,学习如何将一个功能作为对象传递给另一个方法是非常重要的。
工厂在Java框架中无处不在,学习为什么和何时使用工厂模式非常重要。
学习如何负责地使用单例模式有助于理解你可能正在阅读的其他人代码中的陷阱。
总的来说,理解设计模式的原因比掌握具体实现方式更重要。知道什么时候不适用某种模式和什么时候适用同样重要。
模型-视图-控制器只是列表上的一个,Spring有一个MVC框架:
但不要忘记基础知识 :)
带着眼泪面试Java开发人员 http://java.sys-con.com/node/1040135
顺便说一下,我会在重构时进一步进行操作 - 基于类名,我会在代码审查中断言CreditCardProcessor应该处理费用,所以不是他的:
card.charge(cardProcessor, 100);
cardProcessor.chargeCard (card, 100);
(是的,我用更易读的变量名替换了他的变量名 c 和 ccp )
抽象工厂
、工厂方法
和单例
模式,我认为以下模式也很有用:
桥接模式:抽象和实现可以独立变化
装饰器模式:在运行时更改对象的行为
中介者模式:在不同对象之间启用集中式通信媒介
责任链模式:如果您正在向Web服务请求添加过滤器,则此模式非常有用。
策略模式:如果您想通过检查参数在算法族中更改算法,则可以在运行时执行此操作
外观模式:如果您的系统中有许多服务,并且不想将所有服务都公开给客户端,请使用一个Facade类与其他服务交互。
sourcemaking提供了每个设计模式的详细信息:意图、结构、清单和经验法则。
还有一个SE问题肯定会对您有所帮助:
Hibernate?那么工作单元是必须的http://martinfowler.com/eaaCatalog/unitOfWork.html
组合模式,在JUnit框架中存在。(Test-TestCase-TestSuite)
适配器、生成器、命令、模板方法和策略模式在实践中易于使用。
状态模式也帮助我清理继承源代码中的混乱。