用模式思考(什么情况下用模式,什么情况下不用模式)
保持简单(用最简单的方法去解决问题。)
要知道何时需要模式……
重构时间就是模式时间
拿掉你所不需要的,不要害怕一个模式充你的设计中删除
如果你现在不需要,就别做。
反模式 :告诉你采用一个不好的解决方案解决一个问题。
云认知:你想怎么才能骗过自己的大脑,让我的大脑记住。把自己的神经点火。
怎么样让自己的大脑就范:
1.慢一点,你看的越多,记住的越少。时不时的停下来,深深的思考一番。
2.勤做练习题,做笔记。
3.上床睡觉前千万别看难懂的书或者学习难懂的知识。随便读。
4.要喝水,多喝水。
5.大声的说出来吧。
6.听听你的大脑怎么说吧:感觉自己的大脑动不起来时,应该休息休息了。
7.要有感觉。
9.设计一些东西。
head first的学习原则:
1.看得到(图,视频加文字)
2.采用一种针对个人的交谈方式
3.让学习的人想的更深
4.引起我的注意,并且一直注意下去
5.影响我的情绪
雷军:
建议一、只有真正喜欢才能写好程序
建议二、把程序当艺术品,象写诗一样来写代码
建议三、必须写够十万行代码,不要心存侥幸
建议四、时刻保持好奇心
建议五、不要局限在技术本身,多花点精力关注用户
OO基础 :抽象、封装、继承、多态
OO原则 :
有一个和是一个的意思:有一个可能是某个抽象类中有一个接口,是一个可能是某个类继承了某个抽象类。
有一个可能比是一个更好。
代码重用(继承),提高维护性和可扩展性。
OO模式 :
创建型—— Singleton(单例模式) :
名称 | Singleton |
结构 | |
意图 | 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 |
适用性 |
|
创建型——FactoryMethod(工厂方法) :定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
名称 | Factory Method |
结构 | |
意图 | 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 |
适用性 |
|
创建型——Abstract Factory(抽象工厂) :提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
举例说明:
产生鸭子的抽象工厂,这些鸭子都继承同一个接口(Quackable)
public interface Quackable { public void quack(); } public abstract class AbstractDuckFactory { public abstract Quackable createMallardDuck(); public abstract Quackable createRedheadDuck(); public abstract Quackable createDuckCall(); public abstract Quackable createRubberDuck(); } public class CountingDuckFactory extends AbstractDuckFactory { public Quackable createMallardDuck() { return new QuackCounter(new MallardDuck()); } public Quackable createRedheadDuck() { return new QuackCounter(new RedheadDuck()); } public Quackable createDuckCall() { return new QuackCounter(new DuckCall()); } public Quackable createRubberDuck() { return new QuackCounter(new RubberDuck()); } } AbstractDuckFactory duckFactory = new CountingDuckFactory();
名称 | Abstract Factory |
结构 | |
意图 | 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 |
适用性 |
|
行为型—— Strategy 策略模式 :对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.
比喻:鸭子类中鸭子们可能会飞,也可能不会飞,所以就不能不飞放在鸭子里,将其对立开来。
通俗理解:
策略模式:策略,顾名思义,就是面对客户的需求或者是未来的需求,但有些需求是可以大概预测的,但是也有我们
未知的变化,但是一般情况下这个变化是可以限定的。比如鸟儿会叫,但是不一定每个都会叫,这是一种行为,可以
有很多种叫法。所以我们用策略模式来解决他。
行为型——observer(观察者模式 ):
定义了对象之间的一对多依赖关系,这时,当一个对象改变状态时,他的所有依赖着就会收到通知并更新。
比喻:猎头+程序员 = 观察者模式 出版社+订阅者 = 观察者模式,一对多的关系,一个是带有状态的主题,其他是
使用这个主题的使用者
Observer | |
结构 | |
意图 | 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 |
适用性 |
|
设计原理:为了交互对象的松耦合设计而努力。
结构型——Decorator(装饰者模式)
比喻:咖啡店里卖咖啡,咖啡杯是被装饰者,咖啡、糖、摩卡等为装饰着。
名称 | Decorator |
结构 | |
意图 | 动态地给一个对象添加一些额外的职责。就增加功能来说,D e c o r a t o r 模式相比生成子类更为灵活。 |
适用性 |
|
结构型——COMMAND(命令模式)
名称 | Command |
结构 | |
意图 | 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 |
适用性 |
|
结构型——Adapter(_class,_object)适配器
比如:一个美国带回来的电脑,中国的插头不是和它用,这是就要有个适配器来转换电源。
名称 | Adapter |
结构 | |
意图 | 将一个类的接口转换成客户希望的另外一个接口。A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 |
适用性 |
|
结构型——Facade (外观模式)
比喻:一堆零散的个体,比如音箱、DVD、液晶电视……,我如果要看家庭影院,就需要一个一个的将他们开启来,
我的家庭影院才可以开始,这是我们就可以想象我们的模式中,外观模式非常适合。
名称 | Facade |
结构 | |
意图 | 为子系统中的一组接口提供一个一致的界面,F a c a d e 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 |
适用性 |
|
行为型:Template Method(模板方法)
设计原则:别找我,我会找你。
例子:咖啡和茶的制作步骤,这里的步骤就可以作为模板方法。
设计模式迷你手册 ---- RedSword软件工作室
名称 | Template Method |
结构 | |
意图 | 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 |
适用性 |
|