一,23种设计模式
https://blog.youkuaiyun.com/believexfr/article/details/52704272
http://c.biancheng.net/design_pattern/ (非常详细,推荐学习)
二,六大设计原则
https://blog.youkuaiyun.com/xiaoxinyu316/article/details/61930007
也有说是7大原则的,多一个合成/聚合复用原则
合成复用原则(CRP)
合成复用原则定义:
尽量使用对象组合,而不是继承来达到复用的目的。
合成复用原则分析:
(1)合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派关系调用已有对象的方法达到复用其已有功能的目的。简言之,要尽量使用组合、聚合关系,少使用继承。
(2)在面向对象设计中,可以通过两种基本方法在不同的环境中复用已有的设计和实现,即通过组合、聚合关系或通过继承。
·继承复用:实现简单,易于扩展。破坏系统的封装性;从基类继承而来的实现是静态的,不可能在运行时发生改变,没有足够的灵活性;
·组合、聚合复用:耦合度想对较低,选择性地调用成员对象的操作;可以在运行时动态进行。(“黑箱”复用)
(3)组合、聚合可以使系统更加灵活,类与类之间的耦合度降低,一个类的变化对其他类造成的影响相对较少,因此一般首选使用组合、聚合关系来实现复用;其次才考虑继承,在使用继承时,需要严格地遵循里氏替换原则,有效使用继承有助于提高对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,因而要慎重的使用继承复用。
① 优点 :新对象存取成分对象的唯一方法是通过成分对象的接口;
这种复用是黑箱复用,因为成分对象的内部细节是新对象所看不见的;
这种复用支持包装;
这种复用所需的依赖较少;
每一个新的类可以将焦点集中在一个任务上;
这种复用可以在运行时动态进行,新对象可以使用合成/聚合关系将新的责任委派到合适的对象。
② 缺点:
通过这种方式复用建造的系统会有较多的对象需要管理。