原做地址:https://github.com/frank-lam/2019_campus_applyhtml
一、设计模式是人们在面对同类型软件工程设计问题所总结出的一些有用经验。模式不是代码,而是某类问题的通用设计解决方案java
二、4人组Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides总结写了《设计模式》git
三、设计模式的优势和用途github
四、学习设计模式最好的方式:在你的设计和以往的工程里寻找何处可使用它们算法
五、设计模式的本质目的是使软件工程在维护性、扩展性、变化性、复杂度方面成O(N)设计模式
六、OO(Object Oriented)是原则,设计模式是具体方法、工具api
2018/7/15安全
把一个类接口转换成另外一个用户须要的接口。适配器模式让那些接口不兼容的类能够一块儿工做oracle
适配器模式的别名为包装器(Wrapper)模式,它既能够做为类结构型模式,也能够做为对象结构型模式。在适配器模式定义中所说起的接口是指广义的接口,它能够表示一个方法或者方法的集合。app
鸭子(Duck)和火鸡(Turkey)拥有不一样的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。
要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子!
public interface Duck { void quack(); }
public interface Turkey { void gobble(); }
public class WildTurkey implements Turkey { @Override public void gobble() { System.out.println("gobble!"); } }
public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; } @Override public void quack() { turkey.gobble(); } }
public class Client { public static void main(String[] args) { Turkey turkey = new WildTurkey(); Duck duck = new TurkeyAdapter(turkey); duck.quack(); } }
2018/7/11
状态模式的类图和策略模式相似,而且都是可以动态改变对象的行为。
可是状态模式是经过状态转移来改变 Context 所组合的 State 对象,而策略模式是经过 Context 自己的决策来改变组合的 Strategy 对象。
所谓的状态转移,是指 Context 在运行过程当中因为一些条件发生改变而使得 State 对象发生改变,注意必需要是在运行过程当中。
状态模式主要是用来解决状态转移的问题,当状态发生转移了,那么 Context 对象就会改变它的行为;而策略模式主要是用来封装一组能够互相替代的算法族,而且能够根据须要动态地去替换 Context 使用的算法。
设计一个鸭子,它能够动态地改变叫声。这里的算法族是鸭子的叫声行为。
public interface QuackBehavior { void quack(); }
public class Quack implements QuackBehavior { @Override public void quack() { System.out.println("quack!"); } }
public class Squeak implements QuackBehavior{ @Override public void quack() { System.out.println("squeak!"); } }
public class Duck { private QuackBehavior quackBehavior; public void performQuack() { if (quackBehavior != null) { quackBehavior.quack(); } } public void setQuackBehavior(QuackBehavior quackBehavior) { this.quackBehavior = quackBehavior; } }
public class Client { public static void main(String[] args) { Duck duck = new Duck(); duck.setQuackBehavior(new Squeak()); duck.performQuack(); duck.setQuackBehavior(new Quack()); duck.performQuack(); } }
squeak! quack!
2018/7/16
1.什么是高内聚,低耦合?
卡奴达摩的专栏 - CSDN博客
https://blog.csdn.net/zhengzhb/article/category/926691/1
单例模式 - 23种设计模式 - 极客学院Wiki
http://wiki.jikexueyuan.com/project/java-design-pattern/singleton-pattern.html
https://www.bilibili.com/video/av18569541/
hexter 录制的课程 - 极客学院【23种设计模式】
http://my.jikexueyuan.com/hexter/record/
设计模式之禅