Dependencies: Must deploy ApexMocks before deploying this library
Updates
September 2014, IMPORTANT CHANGE,
changes applied to support Dreamforce 2014 advanced presentation,
library now provides Application factories for major layers and support
for ApexMocks. More details to follow! As a result ApexMocks must be deployed to the org before deploying this library. The sample application here has also been updated to demonstrate the new features!
July 2014, IMPORTANT CHANGE, prior 23rd July 2014, both the fflib_SObjectDomain.onValidate() and fflib_SObjectDomain.onValidate(Map<Id, SObject> existingRecords) methods where called during an on after update trigger event. From this point on the onValidate() method will only be called during on after insert. If you still require the orignal behaviour add the line Configuration.enableOldOnUpdateValidateBehaviour(); into your constructor.
June 2014, New classes providing utilities to
support security and dynamic queries, in addition to improvements to
existing Apex Enterprise Pattern base classes. Read more here.
June 2014, Experimental branch supporting automated FLS checking, see README for more details.
This Library
Is derived from the Dreamforce 2012 presentation on Apex Enterprise Patterns
and progresses the patterns further with a more general ongoing home
for them. It also adds some form of namespace qualification from the
previous version. So that classes are grouped together more easily in
the IDE's and packages. Below you can find comprehensive articles and
videos on the use of these patterns. There is also a working sample application illustrating the patterns here.
Application Enterprise Patterns on Force.com
Design patterns are an invaluable tool for developers and architects
looking to build enterprise solutions. Here are presented some tried and
tested enterprise application engineering patterns that have been used
in other platforms and languages. We will discuss and illustrate how
patterns such as Data Mapper, Service Layer, Unit of Work and of course
Model View Controller can be applied to Force.com. Applying these
patterns can help manage governed resources (such as DML) better,
encourage better separation-of-concerns in your logic and enforce
Force.com coding best practices.