再度分享《时间的敌人2017》的笔记与思想

故事

王者荣耀 1

程序员小明的两任女友

现在更是多的表姐愿意找IT男当男朋友,因为不领会是哪些挨(qin)千(ge)刀(ge)的透露了IT男钱多话少死的早的隐秘。

可是问题急迅就来了,有女对象事先的IT男的钱包长这样:

王者荣耀 2

有了女对象的IT男的钱包长这样:

王者荣耀 3

中午,小明的女盆友如花一大早就打扮的亮丽的拉着小明去逛街,走到金饰品店,看上了一个手链,左戴右试爱不释手,时不时还可怜兮兮的看一眼小明,看得小明心惊肉跳的,心想这月已经吃了俩礼拜的泡面了,我这可(bai)爱(jia)的女盆友怎么一点都不明白心痛自己。

泡面就泡面吧,大不断就换窝头咸菜,即便心痛,但为了拿到漂亮的女生一笑,小明仍旧帅气的掏出了信用卡。女对象则喜出望外的立刻就戴上了手链,喜形于色!

王者荣耀 4

以此历程能够用UML类图画一下:

王者荣耀 5

类图中,“女对象”被规划成接口,是考虑到那一个女对象太可(bai)爱(jia),为了能不直接吃泡面,有可能会换此外一个兑现(换女友),咳咳….

王者荣耀 6

过了一段时间,小明实在没钱给女对象买首饰了,如花很快又找到了另一个IT男,和小明分别了,好在平昔暗恋小明的似玉及时向小明勇敢告白,这才让小明从失恋的黑影中走出去

王者荣耀 7

俺们来看一下现行的类图:

王者荣耀 8

小明的新女友似玉温柔珍视,喜欢看书、吃麻辣烫,很懂事,小明心想这一次算是找到了真命天女了!

    /// <summary>
    /// 女朋友接口
    /// </summary>
    public interface IGirlFriend
    {
        string Description { get; set; }
        void Dating();
    }

    /// <summary>
    /// 如花
    /// </summary>
    public class RuHua : IGirlFriend
    {
        public string Description { get; set; } = "我是如花";

        public void Dating()
        {
        }
    }

    /// <summary>
    /// 似玉
    /// </summary>
    public class SiYu : IGirlFriend
    {
        public string Description { get; set; } = "我是似玉";

        public void Dating()
        {
        }
    }

    /// <summary>
    /// 约会装饰器
    /// </summary>
    public class Decorator : IGirlFriend
    {
        public IGirlFriend GirlFriend { get; private set; }
        public string Description { get; set; }

        public Decorator(IGirlFriend girl)
        {
            this.GirlFriend = girl;
        }

        public virtual void Dating()
        {
            Console.Write(this.GirlFriend.Description);
        }
    }

    /// <summary>
    /// 约会之逛街
    /// </summary>
    public class Shopping : Decorator
    {
        public Shopping(IGirlFriend girlFriend):base(girlFriend)
        {
        }

        public override void Dating()
        {
            base.Dating();
            this.WalkAndShopping();
        }

        public void WalkAndShopping()
        {
            Console.WriteLine("我在和小明逛街");
        }
    }

    /// <summary>
    /// 约会之吃饭
    /// </summary>
    public class Eatting : Decorator
    {
        public Eatting(IGirlFriend girlFriend) : base(girlFriend)
        {
        }

        public override void Dating()
        {
            base.Dating();
            this.EatSomething();
        }

        public void EatSomething()
        {
            Console.WriteLine("我在和小明吃饭");
        }
    }

    /// <summary>
    /// 小明真心喜欢似玉,决定带她去看电影
    /// </summary>
    public class Film : Decorator
    {
        public Film(IGirlFriend girl) : base(girl)
        {
        }

        public override void Dating()
        {
            base.Dating();
            this.WatchMovie();
            this.MoCha();
        }

        public void WatchMovie()
        {
            Console.Write("我在和小明看电影");
        }

        public void MoCha()
        {
            Console.WriteLine(",我在和小明喝摩卡");
        }
    }


    /// <summary>
    /// 场景模拟
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            //女友如花
            IGirlFriend ruHua = new RuHua(); 
            IGirlFriend ruHuaShopping = new Shopping(ruHua);
            ruHuaShopping.Dating();

            IGirlFriend ruHuaEatting = new Eatting(ruHua);
            ruHuaEatting.Dating();

            Console.WriteLine("----");

            //女友似玉
            IGirlFriend siYu = new SiYu();
            IGirlFriend siYuFilm = new Film(siYu);
            siYuFilm.Dating();

            Console.ReadKey();
        }
    }

运转结果如下:

我是如花我在和小明逛街
我是如花我在和小明吃饭
----
我是似玉我在和小明看电影,我在和小明喝摩卡

咳咳,(敲黑板)这就是大家先天要说的装饰形式/修饰情势

先看一下概念:

修饰模式,是面向对象编程领域中,一种动态地往一个类中添加新的表现的设计格局。就效能而言,修饰情势相相比较生成子类更为灵活,这样可以给某个对象而不是总体类添加一些职能。维基百科

pexels-photo-774664.jpeg

解读:

动态的给一个对象添加一些很是的天职,就大增效益来说,装饰情势比扩大子类更加灵活。在不转移接口的前提下,增强所考虑的的类的属性

前些天本身给《时间的情人二〇一七年跨年发言》做了一个合计导图,不过也许太大了,清晰度不高,所以前几天用文字重新发五遍。

动用情状:
  1. 亟需增加一个类的效能,或给一个类扩展附加责任;
  2. 内需动态的给一个目的扩充效益,这么些功能可以再动态的裁撤;
  3. 急需追加部分基本效能的排列组合而发生的那多少个大气的功力,从而使得后续变得不现实。

王者荣耀 9

看完《时间的恋人2017》后,我将其内容整理成6个部分,分别按留在脑公里的1个字,2个字,3个字,4个字,5个字,6个字组合在协同。

组成
  1. 架空构件(Component)角色:
    给出一个华而不实接口,以专业准备接到附加责任的对象;
  2. 切实部件(ConcreteComponent)角色:定义一个快要接收附加责任的类;
  3. 装饰角色(Decorator):
    持有一个部件对象(Component)的实例,并定义一个与虚幻构件接口一致的接口;
  4. 切切实实装饰角色(ConcreteDecorator): 负责给构件对象“贴上”附加的权利。

问询了点缀形式的基本概念,我们以网络游戏中的Buff为例举行演习。

1个字:快和大

二零一七年十月30日游乐“Samsung枪战”发布,就是吃鸡游戏。两天后,博客园居然宣布了两套同等类型的吃鸡游戏。不到一个星期之后,腾讯发表自己集团的吃鸡游戏,顿时上线。英雄互娱总裁应书岭实在也在研发这类游戏,所以只可以跟随发表,我们合作社的吃鸡游戏,也准备发表。

本条战场,从悄无一人,到成为炮声连天的舞台,就一个礼拜。应书岭说快,太快了,惊人的快。上半年王者荣耀,下半年吃鸡游戏,由原本的几分钟爽一下,到前些天的1分钟爽好三次。刺激中,用脑部分不同以往。别囿于当下,要活在将来。因为您在离经叛道,仍有数以十万计后来者在叛你的经,逾你的矩。

这让我想到二零一七年的情节创业,知识付费时代,像收割韭菜一样,收割着咱们的注意力。二零一八年短视频的风口又来了,各大平台都早已召集会剪辑和视频创意的丰姿。我也报了班,准备攻读,正好准备自己的旅行部分。

要相信在原有的“机器快、集团快、市场快”上还要加一个“用户演变快”。什么看头吧?就是用户的要求平昔在变,而且喜新厌旧特别快。在此以前就说过自媒体人回答方案,就是多平台矩阵化,以及头部作者们用MCN格局来对抗。而且二〇一八年,社群经济也在频频优异且飞入经常百姓家。就像做事情,不仅照顾新客户,更依赖老客户的维持,尤其是疯狂收割后醒来了好多,不再用流量思维,而是用“顶级用户思维”。罗胖说他们就是直接在做让用户长脸的事,绝不做让用户丢脸的事。

其次个“大”,就是视频中持续提到的大者越大,强者恒强。这让自己想到GAFATA股票被广大人持有。还有此前高盛出台了优良50花名册。

Buff:王者荣耀和魔兽世界

玩过王者荣耀或者魔兽世界等网络游戏的同学都通晓Buff是什么,王者荣耀中的红蓝buff,魔兽世界中骑士的通晓(扩充魔法值上限),法师的法强(增添法术强度),战士的怒吼(增添力量或生命值上限),等等。
这几个“Buff”,持续的光阴短则几秒,长则几分钟甚至几刻钟,有的则越来越不停到角色死亡。

王者荣耀 10
王者荣耀 11

/// <summary>
/// Buff接口
/// </summary>
public interface IHeroBuff
{
    void AddBuff();
}

/// <summary>
/// 王者农药
/// </summary>
public class KingOfGlory : IHeroBuff
{
    public void AddBuff()
    {
        Console.WriteLine("王者荣耀加Buff");
    }
}

/// <summary>
/// 魔兽世界
/// </summary>
public class Wow : IHeroBuff
{
    public void AddBuff()
    {
        Console.WriteLine("魔兽世界加Buff");
    }
}

/// <summary>
/// 装饰器
/// </summary>
public abstract class GameDecorator : IHeroBuff
{
    public IHeroBuff GameBuff { get; set; }

    public GameDecorator(IHeroBuff gf)
    {
        this.GameBuff = gf;
    }

    public abstract void AddBuff();
}

/// <summary>
/// 吃红
/// </summary>
public class RedBuff : GameDecorator
{
    public RedBuff(IHeroBuff buff) : base(buff) { }

    public override void AddBuff()
    {
        this.GameBuff.AddBuff();
        this.AddRedBuff();
        this.FirstBlood();
    }

    private void AddRedBuff()
    {
        Console.WriteLine("都让开我吃红了");
    }

    public void FirstBlood()
    {
        Console.WriteLine("顺便拿个一血");
    }
}

/// <summary>
/// 吃蓝
/// </summary>
public class BlueBuff : GameDecorator
{
    public BlueBuff(IHeroBuff buff) : base(buff) { }

    public override void AddBuff()
    {
        this.GameBuff.AddBuff();
        this.BeCarefor();
        this.AddBlueBuff();
    }

    private void AddBlueBuff()
    {
        Console.WriteLine("那个,不好意思,我补个蓝");
    }

    public void BeCarefor()
    {
        Console.WriteLine("猥琐点小心被拿一血");
    }
}

/// <summary>
/// 战士团队Buff:生命咆哮
/// </summary>
public class CommandingShout : GameDecorator
{
    public CommandingShout(IHeroBuff buff):base(buff)
    {

    }

    public override void AddBuff()
    {
        this.GameBuff.AddBuff();
        this.AddBlood();
    }

    public void AddBlood()
    {
        Console.WriteLine("战士团队Buff: 生命值上限增加10%");
    }
}

/// <summary>
/// 小德Buff:野性呼唤(爪子)
/// </summary>
public class MarkOfTheWild : GameDecorator
{
    public MarkOfTheWild(IHeroBuff gf) : base(gf)
    {
    }

    public override void AddBuff()
    {
        this.GameBuff.AddBuff();
        this.AddSomeBuff();
    }

    public void AddSomeBuff()
    {
        Console.WriteLine("小德Buff: 没玩过不知道有啥增益效果的小德Buff");
    }
}

/// <summary>
/// 骑士Buff:王者祝福
/// </summary>
public class BlessingOfKings : GameDecorator
{
    public BlessingOfKings(IHeroBuff gf) : base(gf)
    {
    }

    public override void AddBuff()
    {
        this.GameBuff.AddBuff();
        this.AddBloodAndFight();
    }

    public void AddBloodAndFight()
    {
        Console.WriteLine("骑士Buff: 攻击力和生命值上限增加10%");
    }
}

/// <summary>
/// 场景模拟
/// </summary>
class Program
{
    static void Main(string[] args)
    {
        // 王者
        IHeroBuff hero = new KingOfGlory(); //定义英雄
        IHeroBuff redBuff = new RedBuff(hero); //吃红
        IHeroBuff blueBuff = new BlueBuff(redBuff); //吃蓝
        blueBuff.AddBuff();

        Console.WriteLine("...........");

        // 魔兽世界
        IHeroBuff wowHero = new Wow(); //定义英雄
        IHeroBuff commandingShout = new CommandingShout(wowHero); //战士buff
        IHeroBuff markOfTheWild = new MarkOfTheWild(commandingShout); //小德buff
        IHeroBuff blessingOfKings = new BlessingOfKings(markOfTheWild); //骑士buff
        blessingOfKings.AddBuff();

        Console.ReadKey();
    }
}

王者荣耀加Buff
都让开我吃红了
顺便拿个一血
猥琐点小心被拿一血
那个,不好意思,我补个蓝
...........
魔兽世界加Buff
战士团队Buff: 生命值上限增加10%
小德Buff: 没玩过不知道有啥增益效果的小德Buff
骑士Buff: 攻击力和生命值上限增加10%

总计一下装饰情势的得失:

  1. 装饰情势与继承关系的目标都是要增添对象的法力,可是装潢情势可以提供比持续关系更多的灵活性;
  2. 经过应用不同的有血有肉装饰类以及这些装饰类的排列组合,设计师可以成立出众多见仁见智行为的重组。
  3. 行使装饰形式或者会时有暴发比持续关系更多的目的,使得查错困难。

装饰形式分透明和半晶莹剔透情势:

  • 其透明性要求程序不要注脚一个ConcreteComponent类型的变量,而应该阐明一个Component类型的变量;
  • 半透明的章程则代表需要按照实际需求讲明一个ConcreteDecorator类型的变量,从而可以调用ConcreteDecorator中才有的艺术。

随便哪一种格局,出发点都是“不更改原来接口”。

王者荣耀,因而,实际支付过程中,无需纠结其透明方式,只要可以降低系统规划的复杂度,满意设计需要即可。


据传,设计模式是药,没有病是不需要吃药的。不知情这句话该怎么明白,路过的乡贤能够辅导一二。

好了,继续回到写Bug了,下周再聊!

王者荣耀 12

2个字:焦虑

在视频中,从大多数人问“假设自己跟不上变化,会不会被淘汰?”,或者“中国经济提升,有没有可持续性?”。即便是前者,别着急,马云先生二〇一八年登出议论称自己每日上午都睡不着觉,果然有比较才有平衡。假诺是接班人,这就需要时间的检查。当然在前边的六大脑洞中也有能回复的答案。

自身第一次切肢体会焦虑。是在二零一八年的学识焦虑中被显眼放大,不断囤课,不断买书。想必你会更明了童话《Iris(爱丽丝)漫游奇境》里,红桃皇后说的,在我这些地点,你必须不停的奔走,你才能留在原地。后来自家豁然了然这种忧患,是足以用勇气来对抗的。放任部分安全感,不让自己困在一定的霎时,有过去,当然更有前途。长期深度思考并施行自己的为主算法就行。

3个字:连接器

某手里这个拉二胡的独身老人,被6万人关注,也就不孤独了。这也让这么些刚刚进场者找到了新玩法。还有一个例子,这就是某满满的地推。想让货车驾驶员用上智能技术,这就需要去链接他们。关键是找到她们,并且安装上APP。于是他们是在厕所地推的。

4个字:六大脑洞

率先个是动车组脑洞。舞台我它在变大,聚光灯这还有更多的角色正在进场。比如强势卡位的前几天头条,这两年国内市场显示的One plus和HTC。把蛋糕做大,即便是1%,也是好几亿的市值。要相信每个车厢都在动,不只是先富的这有些人。比如二三线的消费品牌,三只松鼠/古茗。诸如此类的花费品牌的凸起以及消费产业结构升级。假设您想做基金定投,能够尝试消费产业结构升级方面的基金。当然还有出名公司的枯木逢春。比如全世界最大的液晶面板生产商是谁?它就在中华腹地,这家铺子叫京东方,是建国初期苏联老表弟援建中国的156项根本工程之一。这家店铺全球面板,从手机到电视机,25%的产量是它的。2001年,盯上了液晶产业,然后就一路迭代死磕到了今日。真正的技能是耐得住寂寞的。

哪些是翻新?先把全天下所有的职业重新做五回就领悟了。有时候,创业本身只是把人家见惯司空的空子做成了生意,再或者解决现实本身的题目,比如独角兽集团,点餐软件某了么。

其次个脑洞是热带雨林脑洞。这是一级用户思维的呈现。流量越来越贵,让我们从狩猎采集的一世,进化到农耕时代。德鲁克说过一句话,集团的重任就是创办且预留消费者。不管您手中的用户有稍许,请先照顾你身边一级用户的感想。

其多个脑洞是比特化脑洞。新零售,线上和线下结合。比如某辉超市。赶不上没关系,专注深耕自己的园地,外人会回头来接您的。或者某马生鲜,正在与时间和距离赛跑。再例如线下OPPO的认知战。

第五个拔河脑洞。规模主导游戏。比如AUDI A4,三分之一的买家是炎黄人。所以它的宾利新5系,12项职能,专门为神州付出的。

第五个终点站脑洞。被微软收购的金立的主任奥利拉说过一句话:我们并没有做错什么,但不知缘何,大家输了。市场风云变幻,但中国打造效用和弹性兼具。中国的超大规模性与供求关系恰恰好让大家占超过机。

第七个点子脑洞。中国是起家世界秩序的自变量。比如中印关系。引申到具体中,寓教于乐,咱们领悟其他技术,最好的点子是享受出去,带来新的空子。

5个字:人生的算法

倘诺,现在有两个按纽,褐色的这多少个按纽,你假使按了,间接给您一百万比索,一百万新币,拿走,花,随便,还有一个按纽,你按下,你采纳它,有一半空子,你可以得到一亿卢比,可是还有一半时机,你哪些都拿不到,你要按哪一个?答案:选青色的,这不是一个不确定的挑选。而是人生算法的迭代过程。

率先,你找一个你还算有钱的朋友,你告知她,咱俩关系不错,前几日我们有一个机会,按一个按纽,有一半机遇,能得到一亿韩元,是不是好机遇。你说俺们哥俩好,我甘愿跟你享受,现在您给我一百万比索,我就跟你共同去按,按着一亿新币,我分你一半,听懂了呢?一百万新币,先落袋为安,然后跟别人分享,你还有机会拿到五千万日元,这是一个办法。
这总比你直接拿一百万卢比要强吧,这是一个方案。

再有一个方案,你一直到银行,投资银行。或者是懂金融玩法的一个富商,你跟他说,我前几天有一个机遇,可以按一下,有一半空子拿到一亿港币,这是一个选项权。这么些拔取权的商海估值,按概率说法很简单,就值五千万英镑,这么些五千万新币的选用权,我情愿打个折卖给您,比如说两千万加元。你看,这是显著的两千万比索,总比这一个肯定的一百万日币要强,这是第二个法子。你说,怎么会有这般的傻子啊?愿意花两千万加元买你那几个机构,这不是白痴,那是全球玩金融的人的一种考虑,概率思维,一亿日元,一半的采纳权,那么些选项权就值五千万,只要低于这么些价格,就有机会成交。

其一人生算法衍生自巴菲特的滚雪球理论。所谓人生算法,就是找到这种不断重复,永远重复下去最中央的覆辙,这就叫算法。

6个字:影响人生的书

《国富论》和《枢纽》值得畅读。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website