Twitter - Quiz Tutors
Dependency Injection Pattern - Computer Science. Facebook - Quiz Tutors

Substitution Principle, Dependency Injection Pattern, Open/Close Principle

The key terms of this chapter include Substitution Principle, Dependency Injection Pattern, Open/Close Principle, Java.

Dependency Injection Pattern

Instantiate object outside class –> inject it into the class (pass into constructor)
In Model class, passes Database object into class
Benefit: looser coupling, enable separation of concerns (class does not need to know how to instantiate object)
Object being injected = SERVICE
code passing in service = INJECTOR

MVC Pattern

For web applications
higher level
Model <–> Controller <–> View

Gang Of Four – Design Patterns

Creational Patterns – how to create objects
Structural Patterns – how to organize classes/objects
Behavioral Patterns – how classes interact with each other


structural design pattern – compose objects —> tree structures to represent whole-part hierarchies
Grouping & ungrouping primitive types
– treat a group of objects same way as single instance
Enables nesting


structural design pattern – allows interface of existing class to be used as another interface & allows objects w/ incompatible interfaces to collaborate
adaptor is a
Uses dependency Inversion Principle
– adaptor implements an interface that Client calls on


creational design pattern – replace direct object construction calls (new) with a factory method
Establishing constructor
Not coupled to client


language to speak to DBMS


creational design patter – ensure class has only one instance & providing global access point to instance
Don’t want several instances to access same info
Use static final
Java application – Runtime class – single instance
– use getRuntime to get the one instance of Runtime


behavioral design pattern – traverse elements of a collection w/out exposing underlying representation
Open/close principle
– when creating new iterator — build on existing iterator

Rainbow attack

A precomputed table for reversing cryptographic hash functions (usually password hashes).

Solution to hash attacks

add saltrandom string as additional input to one-way hashing function


a type of hashing function
not good anymore – only good for slow functions


safest hashing function
can add this to gradle

What is a good principle when writing tests

unit tests should not depend on other tests

relational databases

store info in tables that are related to each other


Database management system, a software suite designed to organize and search data.


Rows: values (data)
Columns: attributes


language to speak to DBMS


Java Database Connectivity
Connection conn = DriverManager.getConnection(URI)

SOLID Design Principles

Single responsibility, Open/close, Liskov substitution, Interface segregation, Dependency inversion

Single responsibility Principle

A class, method, variable should only have one responsibility (purpose)

Open/Close Principle

not changing existing code but can extend functionality

Liskov Substitution Principle

Subclasses should be substitutable for their base classes
assess whether is using inheritance correctly