| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- </head>
- <body>
- <!--
- js五中设计模式:
- 单例模式
- 工厂模式
- 代理模式
- 装饰器模式
- 发布订阅模式
- -->
- <!--
- 工厂模式:
- 不使用new创建对象 由工厂函数/类统一对对象进行管理 例如创建 封装逻辑
- 缺点:
- 当模式过多时 工厂代码会显得臃肿
- 场景:
- 批量相似的对象 同意管理构造逻辑
- -->
- <script>
- // admin
- function Production(pName) {
- this.name = pName;
- this.role = '管理员';
- }
- // users
- function User(uName) {
- this.name = uName;
- this.role = '用户';
- }
- function Info(type,name) {
- switch(type) {
- case 'admin':
- return new Production(name);
- case 'users':
- return new User(name);
- default:
- throw new Error("传参错误");
- }
- }
- let f1 = Info("admin","图图")
- let f2 = Info("users","喜羊羊")
- console.log(f1,'f1');
- console.log(f2,'f2');
- </script>
- </body>
- </html>
|