GCA

@redhuang

Joined on Jul 24, 2015

  • THE MISSING CHAPTER Let’s imagine that we’re building an online book store, and one of the use cases we’ve been asked to implement is about customers being able to view the status of their orders. PACKAGE BY LAYER The first, and perhaps simplest, design approach is the traditional horizontal layered architecture, where we separate our code based on what it does from a technical perspective. OrdersController OrdersService OrdersServiceImpl
     Like  Bookmark
  • Core concept What does the architecture of your application scream? Highest-level package THE THEME OF AN ARCHITECTURE OOSE - A Use Case Driven Approach Frameworks are tools to be used, not architectures to be conformed to Architectures are not (or should not be) about frameworks.
     Like  Bookmark
  • Core concept What is wanted here is something like the following substitution property: If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T. GUIDING THE USE OF INHERITANCE This design conforms to the LSP because the behavior of the Billing application does not depend, in any way, on which of the two subtypes it uses. Both of the subtypes are substitutable for the License type. THE SQUARE/RECTANGLE PROBLEM
     Like  Bookmark
  • == import babel from '@rollup/plugin-babel'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import typescript from '@rollup/plugin-typescript'; import commonjs from '@rollup/plugin-commonjs'; import VuePlugin from 'rollup-plugin-vue'; import copy from 'rollup-plugin-copy'; import path from 'path'; import fs from 'fs'; const base = path.resolve(__dirname, '.')
     Like  Bookmark