这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战
七夕快来了,看着街道上年轻男女的成双成对,脸上很倔强的表现出不屑,但心里却默默再次唱起去年唱过的单身情歌。单身这么多年,我最终变得真正的不快乐了。人最怕的是否定自己,思考反思良久,终于知道了我为什么从单身小王子变成单身王者。
第一阶段 天选单例
一开始的原因是因为我喜欢单例,我愿意成为这个世界的 only one 。我大声的告诉全世界,我是天选的单身狗。我自豪的鄙视这世界上的情侣们,同情他们失去了游戏,同情他们失去了自由。
class SingleNumberOne {
constructor(name) {
this.name = name;
}
//静态方法
static getInstance(name) {
if(!this.instance) {
this.instance = new SingleNumberOne(name);
}
return this.instance;
}
sayHi() {
console.log('我是天选的单身狗,我是世界独一无二的一个');
}
}
let singleOne = SingleNumberOne.getInstance('阿辉');
let singleTwo = SingleNumberOne.getInstance('宇宙第一单身狗')
console.log(singleOne === singleTwo); //true
singleOne.sayHi(); // 我是天选的单身狗,我是世界独一无二的一个
第二阶段 无良代理
后面我明白了自由无用,游戏误事,我只是这个世界孤零零的小草,遇到了她,仿佛找到心灵的港湾。她才是这个世界的 only one ,我的天选 girl。靠近再靠近,喜欢更喜欢,但始终不敢迈出那一步薄薄的表白。最后,我找到了好兄弟小王,让他代为我表达我对她的情感。
const aHui = {
sayHi: '你若出水芙蓉,我喜欢你很久了'
};
const handler = {
get(target, key) {
return '阿辉说你很好,但我要说' + target[key];
}
};
const aWang = new Proxy(aHui, handler);
console.log(aWang.sayHi); // 阿辉说你很好,但我要说你若出水芙蓉,我喜欢你很久了
最后没有最后,结果当然没有结果,最终小王和她成为了情侣。隔壁小王坏事,我只怪自己学识浅薄,不懂Proxy,不懂代理模式可以干点其他的事情。
第三阶段 中介者
男人能伸能屈当为人杰。失去了 only one,还有其他的 one。 放下一片树叶,才能看到整片森林。 我学会了主动出击,百花丛中过,哪有不湿身。
我学会了给女孩子加上标签描述,我有了对象管理,我还能根据对象的美丑做出不同的反应。我仿佛就是世界的中心就是渣男。
// 中介者,沟通所有,天下我有
var Mediator = ( function(){
var girls = {}, // 保存所有的沟通者
operations = {}; // 中介者可以执行的操作
operations.add = function( girl ) {
girls[girl.isBeauty] = girls[girl.isBeauty] || [];
girls[girl.isBeauty].push(girl);
};
// 沟通失败或太丑,拉黑
operations.lahei = function(girl) {
var girlsArr = girls[girl.isBeauty];
for(let i = 0; i < girlsArr.length; i++) {
if (girlsArr[i].name === girl.name) {
girlsArr.splice(i, 1);
console.log(`你被${girl.name}被拉黑了`);
break;
}
}
};
operations.sayHi = function( girl ) {
if (girl.isBeauty) {
const words = ['落雁沉鱼','明眸皓齿','螓首蛾眉','水木清华','爽心悦目','天生丽质','天香国色','杏脸桃腮','煦色韶光','杏腮桃脸','杏雨梨云','涎玉沫珠','鱼沉雁落','宜嗔宜喜','旖旎风光','远山芙蓉','艳色绝世','余霞成绮','宜喜宜嗔','艳紫妖红','朱唇皓齿','左家娇女','章台杨柳','阿娇金屋','闭月羞花','春色满园','春深似海','彩云易散','姹紫嫣红','斗美夸丽','尽态极妍','蛾眉皓齿','国色天香','花颜月貌','绝色佳人','天生丽质','慧质兰心','秀外慧中','暗香盈袖','闭月羞花','沉鱼落雁','倾国倾城','温婉娴淑','千娇百媚','仪态万千','美艳绝世','国色天香','花容月貌','明目皓齿','淡扫峨眉','清艳脱俗','香肌玉肤','清丽绝俗','仪态万端','婉风流转','美撼凡尘']
const idx = Math.ceil(Math.random() * words.length);
console.log(`阿辉:${girl.name}, 你是如此的${words[idx]},让我难以忘记`);
} else {
console.log('阿辉:嗯');
}
console.log('------------');
};
var reciveMessage = function(){
var message = Array.prototype.shift.call( arguments ); // arguments 的第一个参数为消息名称
operations[ message ].apply( this, arguments );
};
return {
reciveMessage: reciveMessage
}
})();
function Girl( name, isBeauty ){
this.name = name;
this.isBeauty = isBeauty;
};
Girl.prototype.sayHi = function(){
console.log('女:hi,你好,我是', this.name);
Mediator.reciveMessage('sayHi', this ); // 给渣男发送消息
};
Girl.prototype.lahei = function(){
Mediator.reciveMessage('lahei', this ); // 给渣男发送消息
};
var meetGirl = function(name, isBeauty){
var girl= new Girl(name, isBeauty);
Mediator.reciveMessage('add', girl);
return girl;
};
const xiaoqiao = meetGirl('小乔', true);
const xisi = meetGirl('西施', true);
const diaocan = meetGirl('貂蝉', true);
xiaoqiao.sayHi();
xisi.sayHi();
diaocan.sayHi();
const dongshi = meetGirl('东施', false);
dongshi.sayHi();
dongshi.lahei();
如鱼得水的效果如下:
女:hi,你好,我是 小乔
阿辉:小乔, 你是如此的美撼凡尘,让我难以忘记
------------
女:hi,你好,我是 西施
阿辉:西施, 你是如此的清丽绝俗,让我难以忘记
------------
女:hi,你好,我是 貂蝉
阿辉:貂蝉, 你是如此的温婉娴淑,让我难以忘记
------------
女:hi,你好,我是 东施
阿辉:嗯
------------
你被东施拉黑了
仿佛脱单就在那么一瞬间,但临门一脚的时候,西施 和小乔 一沟通,发现我居然如此多头通讯,实锤渣男。so,竹篮打水一场空,终于还是功亏一篑。用情不专,管理复杂度太高,中介者模式的确不适合。
第四阶段 装饰无用
那我到底该如何做呢,这个时候,室友小周过来告诉我,你应该学会装饰自己,不要这么坦诚。有道理,我猛拍小伙子。正所谓老天关了我一个门,兄弟却给我开了一扇窗。最终我学会了装饰器,我学会了装*。
function handsome(target, name, descriptor) {
const func = descriptor.value;
if (typeof func === 'function') {
descriptor.value = function(...args) {
console.log('------')
console.log('我很帅,我会打篮球')
const results = func.apply(this, args);
return results;
}
}
}
class Person {
@handsome
sayHi() {
console.log('------')
console.log('其实,我仅仅只是很有💰')
}
}
const aHui = new Person();
aHui.sayHi();
你看完学会了打扮,变得很😎。
------
我很帅,我会打篮球
------
其实,我仅仅只是很有💰
我还学会了连环计。
function humor(target, name, descriptor) {
const func = descriptor.value;
if (typeof func === 'function') {
descriptor.value = function(...args) {
console.log('------')
console.log('我会讲冷笑话')
console.log('一只未成年小龙被爸爸揍了,因为它偷看成龙电影。')
const results = func.apply(this, args);
return results;
}
}
}
class Person {
@humor
@handsome
sayHi() {
console.log('------')
console.log('其实,我仅仅只是很有💰')
}
}
const aHui = new Person();
aHui.sayHi();
连环技能展示如下:
------
我会讲冷笑话
一只未成年小龙被爸爸揍了,因为它偷看成龙电影。
------
我很帅,我会打篮球
------
其实,我仅仅只是很有💰
注:以上代码不能直接在浏览器执行,可以按以下步骤
1、npm install @babel/core @babel/node @babel/plugin-proposal-decorators
2、创建 .babelrc,内容如下:
{ "plugins": [ ["@babel/plugin-proposal-decorators", { "legacy": true }] ] }
3、npx babel-node fileName.js
本以为苦其体肤必然换来脱胎换骨,可是妹子却说读不懂我的心,不知道我到底是一个怎么样的灵魂。我苦恨苍天,我只恨我为什么不直接告诉妹子,我没有灵魂,我只是单纯的有钱。我终于懂得了我不需要装,可是妹子却已离我而去。
最后
兜兜转转,恍恍惚惚,生为凡人,学会设计模式,搞定了 computer,却单身且寂寞。最后,七夕,祝有钱情人终成眷属,无情人单身也快乐。
写文不易,欢迎点赞、收藏、关注。其他可能你有兴趣的文章。
欢迎关注同名公众号【对马弹琴】。