设计模式
三方三方
这个作者很懒,什么都没留下…
展开
-
设计模式梳理——状态模式
一、概述 状态模式(State),当一个对象的内在状态发生改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂的情况。把状态的判断逻辑转移到表示不同状态的一些类中,可以把复杂的判断逻辑简化。二、UML图示三、场景问题3.1实现在线投票 考虑一个在线投票的应用,要实现控...转载 2018-09-12 11:39:14 · 336 阅读 · 0 评论 -
设计模式梳理——备忘录模式
一、概述 备忘录模式(Memento),在不破坏封装性的前提下,捕获一个对象的内在状态并在对象之外保存该状态,这样以后就可以将对象恢复到原先保存的状态。二、UML图示Originator(发起人):负责创建一个备忘录,用以记录当前的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些状态。Memnto(...转载 2018-09-13 11:32:43 · 185 阅读 · 0 评论 -
模板方法模式
概念Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's stru...转载 2019-10-29 15:29:37 · 463 阅读 · 0 评论 -
设计模式梳理——策略模式
概述 策略模式(strategy),它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式算法的替换不会影响到使用算法的客户。主要解决在有多种算法相似的情况下,使用 if...else 或 switch...case 所带来的复杂性和臃肿性。编程实现 该程序主要通过模拟商场收费打折的功能实现。1、创建现金收费抽象类public abs...原创 2018-09-10 17:47:08 · 193 阅读 · 0 评论 -
设计模式梳理——外观模式(门面模式)
一、概述 外观模式(Facade),为子系统中的一组接口提供一致的界面,此模式定义了一个高层接口,这一接口使得这些子系统更容易使用。二、UML图示三、编程实现 该程序主要通过模拟股票股民的功能实现。1、股票类public class Stock { public void sell(){ System.out.pri...原创 2018-09-11 15:53:38 · 126 阅读 · 0 评论 -
设计模式梳理——桥接模式
一、概述 桥接模式(Bridge),将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。最大特点就是聚合关系在桥梁里面,具体的业务逻辑由子类完成。二、UML图示三、代码实现1、Implementor类public abstract class Implementor { public...原创 2018-09-13 16:16:59 · 168 阅读 · 0 评论 -
设计模式梳理——组合模式
概述 组合模式(Composite),也称为 整体-部分(Part-Whole)模式,它的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户对单个对象和组合对象的使用具有一致性。组合模式 一般用来描述 整体 与 部分 的关系,它将对象组织到树形结构中,最顶层的节点称为 根节点,根节点下面可以包含 树枝节点 和 叶子节点,树枝节点下面又可以包...原创 2018-09-13 14:25:13 · 239 阅读 · 0 评论 -
设计模式梳理——抽象工厂模式
一、概述抽象工厂模式(Abstract Factory),是23种设计模式之一。DP中是这么定义抽象工厂模式的:抽象工厂模式(Abstract Factory),提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。在学习抽象工厂模式之前,最好熟悉简单工厂模式以及工厂方法模式,这样对理解抽象工厂模式会有一定帮助,而且抽象工厂也是基于工厂方法模式的。至于工厂是用来干...转载 2018-09-12 10:46:00 · 338 阅读 · 0 评论 -
设计模式梳理——工厂方法模式
一、概述 工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。二、UML图示三、编程实现...原创 2018-09-11 11:38:02 · 122 阅读 · 0 评论 -
设计模式梳理——简单工厂模式
一、概述 简单工厂模式又称静态工厂模式。属于创建型模式,但不属于23中GOF设计模式之一。 简单工厂模式,即通过专门定义一个工厂类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。二、编程实现 该程序主要通过模拟计算器的功能实现。1、创建共同父类public class Operation { private int ...原创 2018-09-10 15:16:37 · 155 阅读 · 0 评论 -
合成复用原则
一、什么是合成/聚合复用原则?合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。简述为:要尽量使用合成/聚合,尽量不要使用继承。二、合成和聚合的区别;依赖和关联合成(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。用C语言来讲,合成是值的聚合(A...转载 2019-10-28 15:30:16 · 1328 阅读 · 0 评论 -
里氏替换原则
里氏替换原则(Liskov Substitution Principle ,LSP):指的是任何基类可以出现的地方,子类一定可以出现。定义1如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序p的行为没有发生变化,那么类型T2是类型T1的子类型。定义2所有引用基类的地方必须能透明地使用其子类对象。问题由来...转载 2019-10-28 15:01:07 · 212 阅读 · 0 评论 -
迪米特法则(最少知识原则)
定义如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个应用。迪米特法则强调:在类的结构设计上,每一个类都应该尽量降低成员变量的访问权限。也就是说一个类应该包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开; 迪米特法则的根本思想是:强调类之间的松耦合; 类之间的耦合越弱,越有利...原创 2019-10-28 14:24:27 · 1097 阅读 · 0 评论 -
接口隔离原则
什么是接口隔离原则(Interface Segregation Principle, ISP)接口对于Java开发者来说都不陌生,它几乎存在于每一个Java程序中,是抽象的代名词。在讲接口隔离原则之前,先说说接口,接口分为以下两种:实例接口(Object Interface): 在Java中声明一个类,然后用new关键字产生一个实例,是对一个类型的事物的描述,这就是一种接口。或许我们乍一看...转载 2019-10-28 13:47:15 · 202 阅读 · 0 评论 -
单一职责原则
定义单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。应用范围单一职责原则适用的范围有接口、方法、类。按大家的说法,接口和方法必须保证单一职责,类就不必保证,只要符合业务就行。方法设想一下这个场景:假设我们要做一个用户修改名字以及修改密码的功能,可以有多种实现方案,比如下面列举 2 种实现方式代码:第一种实现方式第二种实现方式2种实现有什么区...转载 2019-10-28 11:37:38 · 1012 阅读 · 0 评论 -
依赖倒置原则
High level modules should not depend upon low level modules,Both should depend upon abstractions.Abstractions should not depend upon details.Details should depend upon abstracts.转载 2019-10-28 11:27:57 · 240 阅读 · 0 评论 -
开闭原则
1、定义开闭原则,对于扩展是开放的,对于修改是关闭。OCP_Diagram.png2、实现(1)创建书籍接口interface IBook { String getName(); int getPrice(); String getAuthor();}(2)创建计算机书籍接口interface IComputerBook ext...转载 2019-10-28 10:02:25 · 163 阅读 · 0 评论