SSP - The Simple Singleton Pattern

76
{ @r_mdias - rmdias.com } git.io/QQ7OIQ

description

Development > Organization > Good practices > Standards... SSP is a easy way to modularize and organize your project. Bringing the idea of OOP to JS, but in a simple way. Using it you gain: - Readability - Understanding of the parties - Modularization - Reuse - Adaptability

Transcript of SSP - The Simple Singleton Pattern

Page 1: SSP - The Simple Singleton Pattern

{ @r_mdias - rmdias.com }

git.io/QQ7OIQ

Page 2: SSP - The Simple Singleton Pattern

{ RODOLFO DIAS }

{ @r_mdias - rmdias.com }

Page 3: SSP - The Simple Singleton Pattern

{ RECIFE - BRAZIL }

Page 4: SSP - The Simple Singleton Pattern

{ FRONT END ENGINEER - UFMG }

Page 5: SSP - The Simple Singleton Pattern

{ / MINAS DEV }

Page 6: SSP - The Simple Singleton Pattern

{ DESIGN PATTERNS }

Page 7: SSP - The Simple Singleton Pattern

WHY USE IT??

{ DESIGN PATTERNS }

Page 8: SSP - The Simple Singleton Pattern
Page 9: SSP - The Simple Singleton Pattern

{ DESIGN PATTERNS ( in JS ) }

Page 10: SSP - The Simple Singleton Pattern

{ → DESIGN PATTERNS (in JS)}

['Factory', 'Prototype', 'Mixin', 'Singleton']

Page 11: SSP - The Simple Singleton Pattern

{ → DESIGN PATTERNS (in JS)}

(A LITTLE HARD)

['Factory', 'Prototype', 'Mixin', 'Singleton']

Page 12: SSP - The Simple Singleton Pattern

{ DESIGN PATTERNS ( in JS ) }

(IN EASY WAY)

Page 13: SSP - The Simple Singleton Pattern

{ SSP }

Page 14: SSP - The Simple Singleton Pattern

{ SSP }

Page 15: SSP - The Simple Singleton Pattern

git.io/QQ7OIQ

Page 16: SSP - The Simple Singleton Pattern

git.io/QQ7OIQ

Page 17: SSP - The Simple Singleton Pattern

{ DENNIS CALAZANS }

denniscalazans.com [email protected]

Page 18: SSP - The Simple Singleton Pattern

{ RODOLFO DIAS }

rmdias.com [email protected]

{ DENNIS CALAZANS }

denniscalazans.com [email protected]

Page 19: SSP - The Simple Singleton Pattern

{ SSP WHAT’S IT ? }

Page 20: SSP - The Simple Singleton Pattern

{ SSP HOW IT WORKS? }

Page 21: SSP - The Simple Singleton Pattern

{ → HOW IT WORKS? }

var SSP = SSP || {};

Page 22: SSP - The Simple Singleton Pattern

{ SSP USAGE }

Page 23: SSP - The Simple Singleton Pattern

{ → SSP USAGE }

<!-- Call the SSP file -->

<script src="SSP.js"></script>

Page 24: SSP - The Simple Singleton Pattern

{ → SSP USAGE }

// SSP.MyModule.js

SSP.MyModule = { setUp: function() { console.debug("My SSP module is runing!"); } }

Page 25: SSP - The Simple Singleton Pattern

{ → SSP USAGE }

// SSP.MyModule.Child.js

SSP.MyModule.Child = { setUp: function() { console.debug("My SSP module is runing!"); } }

Page 26: SSP - The Simple Singleton Pattern

{ → SSP USAGE }

<!-- Incorporating Files -->

<script src="SSP.js"></script> <script src="SSP.MyModule.js"></script> <script src="SSP.MyModule.Child.js"></script> <script>SSP.init();</script>

Page 27: SSP - The Simple Singleton Pattern

{ SSP METHODS AND PROPERTIES }

Page 28: SSP - The Simple Singleton Pattern

{ → SSP - PROPERTIES / _nameSpace }

// All modules have a property called nameSpace that // returning string the name of module.

SSP.MyModule = { setUp: function() { var self = this;

console.debug(self._nameSpace);

// return -> "SSP.MyModule" } }

Page 29: SSP - The Simple Singleton Pattern

{ → SSP - METHODS / .setUp( ) }

// SetUp is a Main method. // It always runs when the father's module is called.

SSP.MyModule = { setUp: function() {

console.debug(‘My SSP Module is running!’);

// return -> "My SSP Module is running!" } }

Page 30: SSP - The Simple Singleton Pattern

{ → SSP - METHODS / .init( ) }

// This method initialize all modules from your application.

SSP.init();

SSP.init(SSP.MyModule); SSP.init(SSP.MyModule, SSP.MyOtherModule);

Page 31: SSP - The Simple Singleton Pattern

{ → SSP - METHODS / .applyByNamespace(‘namespace’, params) }

// Using this you can run a method that's located in other // module/part from your application, but using `_namespace`. // For example:

SSP.applyByNamespace(‘SSP.MyModule');

// SSP.MyModule();

Page 32: SSP - The Simple Singleton Pattern

{ → SSP - METHODS / .applyByNamespace(‘namespace’, params) }

// Using this you can run a method that's located in other // module/part from your application, but using `_namespace`. // For example:

SSP.applyByNamespace(‘SSP.MyModule’, SomeParameter);

// SSP.MyModule(SomeParameter);

Page 33: SSP - The Simple Singleton Pattern

{ → SSP - PROPERTIES AND METHODS }

// Available Methods

- _nameSpace; - .init(); - .setUp(); - .delegate(scope, method); - .readModule(Module); - .getByNamespace('namespace'); - .applyByNamespace('namespace'); - .initModuleByNamespace('nameSpace', params);

Page 34: SSP - The Simple Singleton Pattern

{ EXAMPLE → TODO APP }

Page 35: SSP - The Simple Singleton Pattern

{ → TODO APP }

Page 36: SSP - The Simple Singleton Pattern

{ EXAMPLE → TODO APP }

(HOW WE DO)

Page 37: SSP - The Simple Singleton Pattern

{ → TODO APP }

<script src="Todo.js"></script>

Page 38: SSP - The Simple Singleton Pattern

{ → TODO APP }

'use strict';

function createTask(){ // body... };

Page 39: SSP - The Simple Singleton Pattern

{ → TODO APP }

'use strict';

function updateTask(taskID){ // body... };

Page 40: SSP - The Simple Singleton Pattern

{ → TODO APP }

'use strict';

function deleteTask(taskID){ // body... };

Page 41: SSP - The Simple Singleton Pattern

{ → TODO APP }

'use strict';

function completeTask(taskID){ // body... };

Page 42: SSP - The Simple Singleton Pattern

{ → TODO APP }

'use strict';

function buildTasksList(tasks) { // body... };

Page 43: SSP - The Simple Singleton Pattern

{ → TODO APP }

var form, completeTaskButton, deleteTaskButton, updateTaskButton;

form = document.querySelector('.submit-task'); completeTaskButton = document.querySelector('.complete-task'); deleteTaskButton = document.querySelector('.delete-task'); updateTaskButton = document.querySelector('.update-task');

Page 44: SSP - The Simple Singleton Pattern

{ → TODO APP }

form.addEventListener('submit', function(e) { createTask(taskName); buildTasksList(tasks); // body... });

Page 45: SSP - The Simple Singleton Pattern

{ → TODO APP }

completeTaskButton.addEventListener('click', function(e) { completeTask(taskID); buildTasksList(tasks); // body... });

Page 46: SSP - The Simple Singleton Pattern

{ → TODO APP }

deleteTaskButton.addEventListener('click', function(e) { deleteTask(taskID); buildTasksList(tasks); // body... });

Page 47: SSP - The Simple Singleton Pattern

{ → TODO APP }

updateTaskButton.addEventListener('click', function(e) { updateTask(taskID); buildTasksList(tasks); // body... });

Page 48: SSP - The Simple Singleton Pattern

'use strict';

function createTask(){ // body... };

function updateTask(taskID){ // body... };

function deleteTask(taskID){ // body... };

function completeTask(taskID){ // body... };

function taskCounter(tasks){ // body... };

function buildTasksList(tasks) { // body... };

Page 49: SSP - The Simple Singleton Pattern

'use strict';

function createTask(){ // body... };

function updateTask(taskID){ // body... };

function deleteTask(taskID){ // body... };

function completeTask(taskID){ // body... };

function taskCounter(tasks){ // body... };

function buildTasksList(tasks) { // body... };

:( |

Page 50: SSP - The Simple Singleton Pattern

var form, completeTaskButton, deleteTaskButton, updateTaskButton;

form = document.querySelector('.submit-task'); completeTaskButton = document.querySelector('.complete-task'); deleteTaskButton = document.querySelector('.delete-task'); updateTaskButton = document.querySelector('.update-task');

form.addEventListener('submit', function(e) { createTask(taskName); buildTasksList(tasks); // body... });

completeTaskButton.addEventListener('click', function(e) { completeTask(taskID); buildTasksList(tasks); // body... });

deleteTaskButton.addEventListener('click', function(e) { deleteTask(taskID); buildTasksList(tasks); // body... });

updateTaskButton.addEventListener('click', function(e) { updateTask(taskID); buildTasksList(tasks); // body... });

:( |

Page 51: SSP - The Simple Singleton Pattern

var form, completeTaskButton, deleteTaskButton, updateTaskButton;

form = document.querySelector('.submit-task'); completeTaskButton = document.querySelector('.complete-task'); deleteTaskButton = document.querySelector('.delete-task'); updateTaskButton = document.querySelector('.update-task');

form.addEventListener('submit', function(e) { createTask(taskName); buildTasksList(tasks); // body... });

completeTaskButton.addEventListener('click', function(e) { completeTask(taskID); buildTasksList(tasks); // body... });

deleteTaskButton.addEventListener('click', function(e) { deleteTask(taskID); buildTasksList(tasks); // body... });

updateTaskButton.addEventListener('click', function(e) { updateTask(taskID); buildTasksList(tasks); // body... });

: (`|

Page 52: SSP - The Simple Singleton Pattern

{ EXAMPLE → TODO APP }

(HOW TO DO USING SSP)

Page 53: SSP - The Simple Singleton Pattern

{ → TODO APP }

<script src="SSP.js"></script>

Page 54: SSP - The Simple Singleton Pattern

<script src="SSP.js"></script> <script src="SSP.Todo.js"></script>

{ → TODO APP }

Page 55: SSP - The Simple Singleton Pattern

<script src="SSP.js"></script> <script src="SSP.Todo.js"></script> <script src="SSP.Todo.Requests.js"></script>

{ → TODO APP }

Page 56: SSP - The Simple Singleton Pattern

<script src="SSP.js"></script> <script src="SSP.Todo.js"></script> <script src="SSP.Todo.Requests.js"></script> <script>SSP.init();</script>

{ → TODO APP }

Page 57: SSP - The Simple Singleton Pattern

{ → TODO APP }

// SSP.Todo.JS

SSP.Todo = { setUp: function() { var self = this;

}, createTask : function() { // body... }, buildTasksList : function(todoList){ // body... } }

Page 58: SSP - The Simple Singleton Pattern

{ → TODO APP }

// SSP.Todo.Requests.js

SSP.Todo.Requests = { setUp: function() { var self = this;

}, getTodoList : function() { // body... }, setTodoList : function(parameter) { // body... } }

Page 59: SSP - The Simple Singleton Pattern

// SSP.Todo.JS

SSP.Todo = { setUp: function() {

}, createTask : function() { var self = this;

}, updateTask : function(taskID) { // body... }, updateTask : function(taskID) { // body... }, deleteTask : function(taskID) { // body... }, completeTask : function(taskID) { // body... }, buildTasksList : function(todoList){ // body... } }

Page 60: SSP - The Simple Singleton Pattern

// SSP.Todo.JS

SSP.Todo = { setUp: function() {

SSP.Todo.createTask(); }, createTask : function() { var self = this;

}, updateTask : function(taskID) { // body... }, updateTask : function(taskID) { // body... }, deleteTask : function(taskID) { // body... }, completeTask : function(taskID) { // body... }, buildTasksList : function(todoList){ // body... } }

Page 61: SSP - The Simple Singleton Pattern

// SSP.Todo.JS

SSP.Todo = { setUp: function() {

SSP.Todo.createTask(); }, createTask : function() { var self = this;

}, updateTask : function(taskID) { // body... }, updateTask : function(taskID) { // body... }, deleteTask : function(taskID) { // body... }, completeTask : function(taskID) { // body... }, buildTasksList : function(todoList){ // body... } }

X

Page 62: SSP - The Simple Singleton Pattern

// SSP.Todo.JS

SSP.Todo = { setUp: function() { var self = this;

self.createTask(); }, createTask : function() { var self = this;

}, updateTask : function(taskID) { // body... }, updateTask : function(taskID) { // body... }, deleteTask : function(taskID) { // body... }, completeTask : function(taskID) { // body... }, buildTasksList : function(todoList){ // body... } }

Page 63: SSP - The Simple Singleton Pattern

// SSP.Todo.JS

SSP.Todo = { setUp: function() { var self = this;

self.createTask(); self.buildTasksList(self.Requests.getTodoList()); // accessing module in another file }, createTask : function() { var self = this;

}, updateTask : function(taskID) { // body... }, updateTask : function(taskID) { // body... }, deleteTask : function(taskID) { // body... }, completeTask : function(taskID) { // body... }, buildTasksList : function(todoList){ // body... } }

Page 64: SSP - The Simple Singleton Pattern

// SSP.Todo.JS

SSP.Todo = { setUp: function() { var self = this;

self.createTask(); self.buildTasksList(self.Requests.getTodoList()); // accessing module in another file }, createTask : function() { var self = this;

self.Requests.setTodoList(todoList);

}, updateTask : function(taskID) { // body... }, updateTask : function(taskID) { // body... }, deleteTask : function(taskID) { // body... }, completeTask : function(taskID) { // body... }, buildTasksList : function(todoList){ // body... } }

Page 65: SSP - The Simple Singleton Pattern

// SSP.Todo.JS

SSP.Todo = { setUp: function() { var self = this;

self.createTask(); self.buildTasksList(self.Requests.getTodoList()); // accessing module in another file }, createTask : function() { var self = this;

self.Requests.setTodoList(todoList); self.buildTasksList(self.Requests.getTodoList()); }, updateTask : function(taskID) { // body... }, updateTask : function(taskID) { // body... }, deleteTask : function(taskID) { // body... }, completeTask : function(taskID) { // body... }, buildTasksList : function(todoList){ // body... } }

Page 66: SSP - The Simple Singleton Pattern

// SSP.Todo.JS

SSP.Todo = { setUp: function() { var self = this;

self.createTask(); self.buildTasksList(self.Requests.getTodoList()); // accessing module in another file }, createTask : function() { var self = this;

self.Requests.setTodoList(todoList); self.buildTasksList(self.Requests.getTodoList()); }, updateTask : function(taskID) { // body... }, updateTask : function(taskID) { // body... }, deleteTask : function(taskID) { // body... }, completeTask : function(taskID) { // body... }, buildTasksList : function(todoList){ // body... } }

:

(

|

Page 67: SSP - The Simple Singleton Pattern

// SSP.Todo.Requests.js

SSP.Todo.Requests = { setUp: function() { var self = this; }, getTodoList : function() { // body... }, setTodoList : function(parameter) { // body... } }

:

(

|

Page 68: SSP - The Simple Singleton Pattern
Page 69: SSP - The Simple Singleton Pattern

{ → TODO APP }

Page 70: SSP - The Simple Singleton Pattern

git.io/QQ7OIQ

Page 71: SSP - The Simple Singleton Pattern

{ SSP → WHO USES IT? }

Page 72: SSP - The Simple Singleton Pattern
Page 73: SSP - The Simple Singleton Pattern

git.io/QQ7OIQ

Page 74: SSP - The Simple Singleton Pattern
Page 75: SSP - The Simple Singleton Pattern

{ VLW, FLWS \O/ }

{ @r_mdias - rmdias.com }

Page 76: SSP - The Simple Singleton Pattern

{ THANKS!! }

{ @r_mdias - rmdias.com }