深度思考(二)-遇到复杂问题,如何快速理清思路? 探查数据发现,多数新人被预测高分(预期应该是部分新人被预测高分),查找模型不符合预期的原因,调整模型。探查数据发现,当前挑选用户方式实验组与对照组有很大不同,查找不同的原因,提出优化策略。所以,在资金有限情况下,我们先找一个好的店长和店铺位置,其次做好推广,最后找中等的技术人员和装修。要素排序法,列要素排顺序。类比框架思考法,适用于快速上手一个任务,而不是把某件事做的多么完美。结果倒推法:确认目标——》根据目标制定方案——》根据方案寻找资料。简单思考法:收集资料——》分析资料——》制定方案。
设计模式花园(十九)-桥接模式 圣诞节到了,我们设计一个礼物对象,但是礼物可分为大礼物和小礼物(M类),礼物的种类又可分为玩具、花等(N类);如果用继承,可能产生MxN种,故这里我们创造一个Gift抽象类和GiftImpl抽象类,然后Gift抽象类实现大小礼物、GiftImpl抽象类实现花、玩具类,二者各自发展;桥接模式是结构型模式的一种。桥接模式将抽象部分(抽象类)和实现部分(类)分离,二者都可以独立的变化。具体做法是顶层两个抽象类,其中一个抽象类中聚合(构造函数传递)另一个抽象类的实现类,然后创建包含两种概念的对象。
设计模式花园(十八)-代理模式 代理模式是结构型模式的一种。代理模式是一个类代表另一个类的功能(继承也可以实现类似的功能,这里通过耦合来代替继承,实现解耦的目的)。例如:买茅台并不一定要去茅台厂买,可以去各种经销店购买。我们创建一个狗,并创建两个狗的代理类,一个用来记录狗玩耍的时间,一个用来标记狗开始、结束玩耍的日志。
设计模式花园(十七)-责任链模式 责任链模式是行为型模式的一种。责任链模式是处理请求的模式,将多个处理器串成一条链,让请求在链上进行传递。例如:报销审批,在自己职责范围中的可以审批,然后扔给下一个审批者。我们生成一行字符串消息,然后创建多个处理器对字符串进行过滤,并根据自己需要决定在哪里结束处理。
设计模式花园(十六)-观察者模式 观察者模式是行为型模式的一种。观察者模式又叫事件处理模式/生产者消费者模式,一个对象的状态发生更改时,会通知所有依赖它的对象并自动更新。PS:钩子函数Hook、Callback、Listener、Observer本质上都是观察者模式。我们创建一个孩子类,然后创建多个观察者(狗、妈妈),当孩子醒(发生事件)的时候,会通知多个观察者做出不同的反应。
设计模式花园(十五)-状态模式 状态模式是行为型模式的一种。状态模式基于状态决定类的行为。具体做法是我们实现一个状态抽象类/接口,继承或实现的子类分别对应不同的状态,且子类中重写不同的方法。我们实现根据孩子的不同状态说不同话的功能。
设计模式花园(十四)-原型模式 原型模式又叫克隆模式,从当前对象克隆一个相同对象。例如:Java内部自带原型模式,Object.clone()。可用于深拷贝的Location类。实现可克隆的Garden类。
设计模式花园(四)-策略模式 策略模式是行为型模式的一种,定义多个策略类,策略继承同一个策略接口,Context类方法可以根据传入的策略对象,调用不同的策略对象方法(Context初始化时,传入策略对象,然后调用策略对象方法)。我们编写加和减策略,然后根据不同的策略对象,调用不同的策略对象方法。
设计模式花园(十三)-备忘录模式 备忘录模式是行为型模式的一种。保存一个对象当前状态,以便在适当的时候进行恢复。游戏类,负责将状态从控制面板中取出恢复到游戏。我们根据备忘录模式实现游戏中的存档和读档。控制面板类,负责将关卡状态保存。关卡类,代表当前状态的一个类。
设计模式花园(十二)-装饰器模式 装饰器模式是结构型模式的一种,它在不改变原类的情况下,添加新的功能(装饰)。具体做法是创建一个抽象类(装饰类)并传入原有的类,然后重写原有类方法。场景:1)扩展一个类的功能。我们在我们的小花园的基础上增加一个围墙。PS:为了扩展性,我们考虑小花园继承自花园接口,这样我们既可以在花园接口向下扩展一层,同时也可以通过装饰类这个抽象类,重写原有方法,再次进行扩展。围墙花园类,给花园类增加一个围墙。
设计模式花园(十)-适配器模式 适配器模式(包装器模式)是将类的接口转化为另一个类的接口。对象适配器是适配器类构造方法传入原类对象,然后实现目标接口的方法对父类进行改写。人类朋友适配器类,人类朋友适配器继承猫类并实现人类朋友接口。即具备人类朋友说人话的功能,又能够获取到父类猫发出声响的功能,并通过转化将猫的声响变为人类可以理解的人话。人类朋友适配器类,实现人类朋友接口,具备说人话的功能。我们构造一个人猫适配器,让猫具有说人话的功能,实现人类与喵星人的对话。人类的朋友的接口,具备说人话的功能。人类的朋友的接口,具备说人话的功能。
设计模式花园(九)-模版模式 模板模式是行为型模式的一种。它提供一个可作为模板的抽象类,具体做法是定义一个包含多个抽象方法和一个方法(作为模板方法)的抽象类,子类按需要实现抽象方法来完成模板方法。小明的妈妈做饭步骤都是同一个模版,先定义好一个模板,卖菜、洗菜、煮饭,然后通过子类中对这些步骤进行填充,来达到按需实现做菜整体过程的目的。
设计模式花园(八)-构建器模式 构建器模式是创建型模式的一种。它使用多个简单对象链式构造一个复杂对象,一般在类中增加一个builder静态类,类中实现各种设置属性的方法。常用于链式形式初始化一个参数很多的对象。在Design Garden中我们可以通过花园构建器链式调用方法一步步创建一个花园对象。
设计模式花园(七)-享元模式 享元模式是结构型模式的一种,提前创建好对象放入池子中,重复利用。例如:数据库连接池、JAVA中的string,如果有则返回,没有则创建一个字符串放入字符串缓存池中。DesignGarden里的孩子有一个玩具池,每次都会拿出一个好的玩具玩,若玩具池没有玩具则创建一个新玩具。
设计模式花园(五)-外观模式 为子系统(子类)提供一个统一的界面(初始化子类,并提供子类方法)。(外观模式类似工厂模式,不同点在于工厂模式提供一个子类对象,而外观模式提供多个子类对象方法组合的对象)Design Garden女主人需要一只猫和一只狗,提高花园温馨度,于是我们设计一个猫狗一起玩耍的美好画面。