第一次尝试这种风格写代码,感觉蛮不错的
这种代码的设计风格实现起来就很舒服

第一题实现:

class Car {constructor(number, name) {this.number = numberthis.name = name}
}
class Kuaiche extends Car {constructor(number, name) {super(number, name)this.price = 1}
}
class Zhuanche extends Car {constructor (number, name) {super(number, name)this.price = 2}
}
class Trip {constructor(car) {this.car = car}start () {console.log(`开始行程,显示车辆信息:号码->${this.car.number},车名->${this.car.name}`)}end () {console.log(`结束行程,显示金额:${this.car.price * 5}`)}
}let car = new Kuaiche(110, '本田')
let trip = new Trip(car)
trip.start()
trip.end()

第二题实现:

class Park {constructor(floors) {this.camera = new Camerathis.screen = new Screenthis.floors = floors || []this.carList = {}}in (car) {// 通过摄像头获取信息const info = this.camera.shot(car)// 停到某个停车位const i = parseInt(Math.random()*100)const place = this.floors[0].places[i]place.in()info.place = placethis.carList[car.number] = info}out (car) {//获取信息const info = this.carList[car.number]// 将停车位清空const place = info.placeplace.out()// 显示时间this.screen.show(car, info.inTime)delete this.carList[car.number]}// 停车场总共还有多少个空的车位emptyPlaceNum (floors) {return this.floors.map((floor) => {return `第${floor.index}层还有${floor.emptyPlaceNum()}个空车位`}).join('\n')}
}
class Floor {constructor(index, places) {//index表示第几层this.index = indexthis.places = places || []}emptyPlaceNum() {let count = 0for (let i=0;i<this.places.length;i++){if (this.places[i].empty) {count+=1}}// console.log(count)return count// let num = 0//    this.places.forEach(p => {//        if (p.empty) {//            num = num + 1//        }//    })//    return num}
}
class Place {constructor() {this.empty = true} in () {// console.error('进来了')this.empty = false}out() {this.empty = true}
}
class Camera {shot(car) {return {num: car.number,inTime: Date.now()}// console.log(`车牌号:${car.number}`)// console.log(`进入时间:${new Date().getTime()}`)}
}
class Screen {show(car, inTime) {console.log(`车牌号:${car.number}`)console.log(`该车辆停留的时间为:${Date.now() - inTime}`)}
}
class Car {constructor(number) {this.number = number}
}// 测试
// 初始化停车场
const floors = []
for (let i=0;i<3;i++){const places = []for (let j=0;j<100;j++) {places[j] = new Place()}floors[i] = new Floor(i+1, places)
}const park = new Park(floors)
const car1 = new Car(100)
const car2 = new Car(110)
const car3 = new Car(200)
console.log('第一辆车进入')
console.log(park.emptyPlaceNum())
park.in(car1)console.log('----------------')console.log('第二辆车进入')
console.log(park.emptyPlaceNum())
park.in(car2)console.log('----------------')
console.log('第一辆车离开')
park.out(car1)console.log('----------------')
console.log('第二辆车离开')
park.out(car2)console.log('----------------')console.log('第三辆车进入')
park.in(car3)
console.log('----------------')
console.log('第三辆车离开')
console.log(park.emptyPlaceNum())
park.out(car3)

根据应用场景画出UML类图并代码实现相关推荐

  1. 23种设计模式【全】 包含:模式定义 使用场景 实现步骤 优缺点 模式区别 UML类图 示例代码 注意项等

    23种设计模式(全) ***项目地址***:[GitHub](https://github.com/yjhroot/design-pattern) 声明 模式分类(3大类) 创建型模式(共5种) 结构 ...

  2. [轉]VS2010 UML类图生成代码

    FROM : http://kb.cnblogs.com/a/2280479/ VS2010 UML类图生成代码 1. 安装VS10-KB2403277-x86.exe http://download ...

  3. 如果你看不懂别人画的 UML 类图,看这一篇文章就够了

    目录 1.UML 定义 2.类图中每个类的构成 3.UML类图中箭头的含义 3.1.实线空心箭头 3.2.虚线空心三角箭头 3.3. 实线箭头 3.4.虚线箭头 3.5.尾部为空心菱形箭头 (也可没箭 ...

  4. 最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构

    版权声明:本文为博主原创文章,转载时麻烦注明源文章链接,谢谢合作 https://blog.csdn.net/u013088062/article/details/50353202 1.什么是UML ...

  5. java设计模式之工厂模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  6. Java设计模式之模板方法模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  7. Java设计模式之享元模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  8. java设计模式之建造者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  9. Java设计模式之组合模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

最新文章

  1. squid 优化指南
  2. 智能手环功能模块设计_基于STM32实现智能手环设计
  3. linux++tar打包目录,linux中tar命令打包目录与排除目录打包linux操作系统 -电脑资料...
  4. C | 构成和编码规范
  5. 7天拿到阿里Android岗位offer,都是精髓!
  6. Android MotionEvent中getX()、getRawX()和getTop()的区别
  7. 这帮吃货程序猿,给阿里食堂来了一波骚操作
  8. 几种简单的社交网站的标志按钮
  9. MyBatis 核心对象,工作原理及源码解读
  10. Android Google Map APIKey申请
  11. LINUX用户执行过的命令,保存在.bash_history
  12. JVM内存模型及CMS、G1和ZGC垃圾回收器详解
  13. 快压下载|快压软件官方下载
  14. matlab gui串口通信,Matlab GUI上位机界面实现串口通信
  15. ls只显示文件名/只显示文件夹名
  16. chmod 777 授权无效
  17. LINUX彻底清除历史记录命令
  18. 移动端300ms延迟_移动端延迟300ms的原因以及解决方案
  19. 最近3年股息率最高排名
  20. 基于S32K144 CAN总线功能开发详解

热门文章

  1. Android App添加广告
  2. VB.net下有个函数strconv可以进行简体繁体转换(转载)
  3. java中集合对象与string互转的几种方式
  4. 嵌入式操作系统漫议:功能与特点
  5. 五招提升你的Google搜索技巧
  6. linux tomcat6 permgen space,tomcat内存溢出之PermGen space
  7. android image对象改变,【Android学习】动态放大缩小ImageView里的图片,运用Matrix对象来....
  8. python退出程序-python退出程序
  9. [置顶] Android玄铁剑之TextView之传送门
  10. Webshell河马后门查杀工具配合shell脚本实现多站点自动化查杀