关联(association)实线箭头
聚合(Aggregation):表示一种弱的‘拥有’关系,体现是A对象可以包含B对象,但B对象不是A对象的一部分;空心菱形+实线箭头
合成(Composition)或组合:是一种强的‘拥有’关系,体现了严格的局部和整体的关系,部分和整体的生命周期一样;实心菱形+实线箭头
法则:
1、单一责任原则:就一个类而言,应该仅有一个引起它变化的原因;软件设计真正要做的许多内容,就是发现职责并把那些职责分离。
2、开放-封闭原则(The Open-Closeed Principle 简称OCP):软件实体(类、模块、函数等等应该可以扩展,但是不可修改)。
依赖倒转原则或依赖倒置:高层模块不应该依赖低层模块;
2.1里氏代换原则(LSP):子类型必须能够替换掉它们的父类型
2.2只有当子类可以替换掉父类,软件单位的功能不受影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为;
模式:
1、简单工厂模式:
2、策略模式(Strategy):
(1)它定义了算法家族,分别封装,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
(2)是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各类算法类和使用算法类之间的耦合。
注:反射
3、装饰模式(Decorator):动态的给一个对象增及一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
装饰模式是为已有功能动态地添加更多功能的一种方式;
4、代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问;
5、工厂方法模式(Factory Method)
6、原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象;
(1)浅复制、深复制;
7、模板方法模式(TemplateMethod):定义一个操作中的算法的骨架,而将一些步骤延迟到之类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些待定步骤。
8、外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易实现;
9、建造者模式()
10、观察者模式()
11、抽象工厂模式(Abstract Factory):提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
(1)反射
P115
P158
