Skip to content

Instantly share code, notes, and snippets.

@jacky810124
Last active March 28, 2017 07:58

Revisions

  1. jacky810124 revised this gist Jan 22, 2017. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions design-pattern-state.js
    Original file line number Diff line number Diff line change
    @@ -18,15 +18,15 @@ class Verifying extends State {

    }

    class VerifyFailed extends State{
    class VerifyFailed extends State {

    reject() {
    console.log('verifying')
    }

    }

    class VerifySucceed extends State{
    class VerifySucceed extends State {

    }

  2. jacky810124 revised this gist Jan 22, 2017. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions design-pattern-state.js
    Original file line number Diff line number Diff line change
    @@ -9,8 +9,8 @@ class State {

    class Verifying extends State {

    approve() {
    console.log('verify succeed')
    approve(data) {
    console.log('verify succeed', data)
    }
    reject() {
    console.log('verify failed')
    @@ -44,5 +44,5 @@ class Teacher {
    }

    const teacherA = new Teacher('Verifying')
    teacherA.approve()
    teacherA.approve({ name: 'jacky' })

  3. jacky810124 created this gist Jan 22, 2017.
    48 changes: 48 additions & 0 deletions design-pattern-state.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    class State {
    approve() {
    throw 'Should override this function'
    }
    reject() {
    throw 'Should override this function'
    }
    }

    class Verifying extends State {

    approve() {
    console.log('verify succeed')
    }
    reject() {
    console.log('verify failed')
    }

    }

    class VerifyFailed extends State{

    reject() {
    console.log('verifying')
    }

    }

    class VerifySucceed extends State{

    }

    class Teacher {

    constructor(state) {

    const states = { Verifying, VerifySucceed, VerifyFailed }

    this.currentState = new states[state]()
    this.approve = this.currentState.approve
    this.reject = this.currentState.reject
    }

    }

    const teacherA = new Teacher('Verifying')
    teacherA.approve()