广东深圳网站设计室,创立一个公司需要多少钱,wordpress 点击 排名,网站版权 备案icp浅谈23种设计模式 类之间的关联关系#xff1a;在使用Java、C#和C等编程语言实现关联关系时#xff0c;通常将一个类作为另一个类的属性。 (1)双向关联#xff0c;两个类互相为各自的属性#xff0c;比如顾客类Customer和商品类Product#xff0c;顾客拥有商品#x…浅谈23种设计模式 类之间的关联关系在使用Java、C#和C等编程语言实现关联关系时通常将一个类作为另一个类的属性。 (1)双向关联两个类互相为各自的属性比如顾客类Customer和商品类Product顾客拥有商品商品与某个顾客相关联。 (2)单向关联一个类作为另一个类的属性顾客Customer拥有地址AddressUML图用带箭头的直线表示由Customer指向Address。 (3)自关联此类的属性对象类型属于该类本身例如节点类Node的成员又是节点对象。 (4)多重关联Form类的对象包含多个Button类一个Button只与一个Form相关联。 (5)聚合关系是一种特殊的关联关系强调部分与整体比如汽车Car和引擎Engine引擎可以脱离汽车单独存在但是是汽车的组成部分UML图中用带空心菱形的直线表示由汽车指向引擎,表示汽车contains引擎。(Engine类可以在Car类的外部实例化然后作为参数传入Car类) (6)组合关系是一种特殊的关联关系也强调部分与整体关系比如头Head和嘴MouthMouth不能脱离Head单独存在UML图用带实心菱形的直线表示由Head指向Mouth表示头has嘴。(Mouth类在Head类的构造函数中实例化Head销毁则Mouth也销毁) *组合关系和聚合关系与普通的关联关系主要是语义上的区别表示关联的程度。 类之间的依赖关系表示某个类的方法使用另一个类的对象作为参数UML图用带箭头的虚线表示由依赖方指向被依赖方。 泛化关系即继承关系UML图中用带空心三角形的直线表示例如Student类 is-a-kind-of Person类 接口与实现关系表示类实现接口中所声明的操作。UML图中用带空心三角形的虚线表示。 面向对象设计原则 (1)单一职责原则类的职责要单一不能将太多的职责放在一个类中。 (2)开闭原则可以在不修改一个软件实体的基础上去扩展其他功能。 (3)里氏代换原则在软件系统中一个可以接受基类对象的地方必然可以接受一个子类对象。 (4)依赖倒转原则针对抽象层编程不要针对具体类编程。 (5)接口隔离原则使用多个专门的接口来替代一个统一的接口。 (6)合成复用原则在系统中尽量多使用组合和聚合关系尽量少使用甚至不使用继承关系。 (7)迪米特法则一个软件实体对其他实体引用越少越好或者说如果两个类不必彼此直接通信那么两个类就不应当发生直接的相互作用而是引入一个第三者发生间接交互。 设计模式定义设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 五种对象创建型模式 1.工厂方法模式 工厂父类负责定义创建产品对象的公共接口而工厂子类则负责生成具体的产品对象这样做的目的是将产品类的实例化操作延迟到工厂子类中完成即通过工厂子类来确定究竟应该实例化哪一个具体产品类。 2.抽象工厂模式 提供一个创建一系列相关或依赖对象的接口而无须指定他们具体的类。 3.建造者模式 将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象它允许用户只通过指定复杂对象的类型和内容就可以构建它们用户不需要知道内部的具体构建细节。 4.原型模式 用原型实例指定创建对象的种类并且通过复制这些原型创建新的对象。原型模式允许一个对象再创建另外一个可定制的对象无须知道任何创建的细节。原型模式的基本工作原理是通过将一个原型对象传给那个要发动创建的对象这个要发动创建的对象通过请求原型对象复制原型来实现创建过程。 5.单例模式 单例模式确保某一个类只有一个实例而且自行实例化并向整个系统提供这个实例这个类称为单例类它提供全局访问的方法。单例模式的要点有三个一是某个类只能有一个实例二是它必须自行创建这个实例三是它必须自行向整个系统提供这个实例。 七种结构型模式 1.适配器模式 将一个接口转换成客户希望的另一个接口适配器模式使接口不兼容的那些类可以一起工作。 2.桥接模式 将抽象部分与它的实现部分分离使它们都可以独立地变化。 3.组合模式 组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。 4.装饰模式 动态地给一个对象增加一些额外的职责就增加对象功能来说装饰模式比生成子类实现更为灵活。 5.外观模式 外部与一个子系统通信必须通过一个统一的外观对象进行为子系统中的一组接口提供一个一致的界面外观模式定义了一个高层接口这个接口使得这一子接口更加容易使用。 6.享元模式 运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象而这些对象都很相似状态变化很小可以实现对象的多次复用。 7.代理模式 给某一个对象提供一个代理并由代理对象控制对原对象的引用。 十一种行为型模式 1.职责链模式 避免请求发送者与接收者耦合在一起让多个对象都有可能接收请求将这些对象连接成一条链并且沿着这条链传递请求直到有对象处理它为止 2.命令模式 将一个请求封装为一个对象从而使我们可用不同的请求对客户进行参数化对请求排队或者记录请求日志以及支持可撤销的操作。 3.解释器模式 定义语法的文法并且建立一个解释器来解释语言中的句子这里的“语言”意思是使用规定格式和语法的代码。 4.迭代器模式 提供一种方法来访问聚合对象而不是暴露这个对象的内部表示。 5.中介者模式 用一个中介对象来封装一系列的对象交互中介者使各对象不需要显示地相互引用从而使其耦合松散而且可以独立地改变它们之间的交互。 6.备忘录模式 在不破坏封装的前提下捕捉一个对象的内部状态并在该对象之外保存这个状态这样可以在以后将对象恢复到原先保存的状态。 7.观察者模式 定义对象间的一种一对多依赖关系使得每当一个对象状态发生改变时其相关依赖对象皆得到通知并自动更新。 8.状态模式 允许一个对象在其内部状态改变时改变它的行为对象看起来似乎修改了它的类。 9.策略模式 定义一系列算法将每一个算法封装起来并让他们可以相互替换。 10.模板方法模式 定义一个操作中算法的骨架而将一些步骤延迟到子类中模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 11.访问者模式 表示一个作用于某对象结构中的各元素的操作它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 转载于:https://www.cnblogs.com/jianglingjun/p/6664292.html