Java设计模式
植树chen
JAVA程序员
展开
-
Java设计模式-25、访问者模式-操作复杂对象结构
第25章:访问者模式-操作复杂对象结构定义:访问者模式(Visitor Pattern):提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。医院处方单结构:代码实现://抽象访问者abstract class Visitor { public abstract void visit(ConcreteElementA elementA); public abstract void visit(ConcreteEl原创 2020-11-23 00:37:43 · 167 阅读 · 0 评论 -
Java设计模式-24、模板方法模式
第24章:模板方法模式定义:模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。请客吃饭中有些步骤是固定的结构:模板方法定义在抽象类中,将基本操作方法组合在一起,是一个具体方法基本方法抽象方法:抽象类声明、由其具体子类实现具体方法:抽象类或具体类声明并实现钩子方法:抽象类或具体类声明并实现,通常父类空实现,子类加以扩展//模板方法public void TemplateMethod()原创 2020-11-23 00:36:49 · 88 阅读 · 0 评论 -
Java设计模式-23、策略模式-算法的封装与切换
第23章:策略模式-算法的封装与切换定义:策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化。将算法的定义与使用分开结构:代码实现://抽象策略类abstract class AbstractStrategy { public abstract void algorithm(); //声明抽象算法}//具体策略类class ConcreteStrategyA extends Abs原创 2020-11-23 00:35:56 · 389 阅读 · 0 评论 -
Java设计模式-22、状态模式-处理对象的多种状态及其相互转换
第22章:状态模式-处理对象的多种状态及其相互转换定义:状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。结构:代码实现://抽象状态类abstract class State { //声明抽象业务方法,不同的具体状态类可以不同的实现 public abstract void handle();}//具体状态类class ConcreteState extends State { public vo原创 2020-11-22 18:10:08 · 905 阅读 · 0 评论 -
Java设计模式-21、观察者模式-对象间的联动
第21章:观察者模式-对象间的联动定义:观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。多人联机对战,类似魔兽世界结构:代码实现://抽象目标abstract class Subject { //定义一个观察者集合用于存储所有观察者对象 protected ArrayList observers<Observer> =new ArrayList();原创 2020-11-22 18:09:04 · 213 阅读 · 0 评论 -
Java设计模式-20、备忘录模式-撤销功能的实现
第20章:备忘录模式-撤销功能的实现定义:备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。象棋中后退一步结构:代码实现://原发器:创建备忘录,存储内部状态public class Originator { private String state; public Originator() { } // 创建一个备忘录对象 publi原创 2020-11-22 16:06:28 · 730 阅读 · 0 评论 -
Java设计模式-18、迭代器模式-遍历聚合对象中的元素
第18章:迭代器模式-遍历聚合对象中的元素定义:迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。存储和遍历分离遥控器可以遍历电视中的频道,而无需暴露其内部结构结构:代码实现://抽象迭代器interface Iterator { public void first(); //将游标指向第一个元素 public void next(); //将游标指向下一个元素 public原创 2020-11-22 16:05:20 · 283 阅读 · 0 评论 -
Java设计模式-19、中介者模式-协调多个对象之间的交互
第19章:中介者模式-协调多个对象之间的交互定义:中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。同事对象之间使用中介者结构:代码实现://抽象中介者abstract class Mediator { protected ArrayList<Colleague> colleagues; //用于存储同事对象 //注册方法原创 2020-11-22 12:40:14 · 457 阅读 · 0 评论 -
Java设计模式-17、解释器模式-自定义语言的实现
第17章:解释器模式-自定义语言的实现定义:解释器模式(Interpreter Pattern):定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释表达式,再计算结构:代码实现://抽象表达式abstract class AbstractExpression { public abstract void interpret(Context ctx);}//终结符表达式class TerminalExpression原创 2020-11-22 09:24:19 · 282 阅读 · 0 评论 -
Java设计模式-16、命令模式-请求发送者与接收者解耦
第16章:命令模式-请求发送者与接收者解耦定义:命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作开关既可以控制灯,也可以控制排气扇开关(请求发送者)--------电器(请求接收者)结构:代码实现://抽象命令abstract class Command { public abstract void execute();}//请求发送者class Invoker原创 2020-11-22 09:22:07 · 202 阅读 · 0 评论 -
Java设计模式-15、职责链模式-请求的链式处理
第15章:职责链模式-请求的链式处理定义:职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止结构:代码实现://抽象处理者abstract class Handler { //维持对下家的引用 protected Handler successor; public void setSuccessor(Handle原创 2020-11-22 09:20:46 · 266 阅读 · 0 评论 -
Java设计模式-16、命令模式-请求发送者与接收者解耦
第16章:命令模式-请求发送者与接收者解耦定义:命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作开关既可以控制灯,也可以控制排气扇开关(请求发送者)--------电器(请求接收者)结构:代码实现://抽象命令abstract class Command { public abstract void execute();}//请求发送者class Invoker原创 2020-11-12 19:36:22 · 357 阅读 · 0 评论 -
Java设计模式-15、职责链模式-请求的链式处理
第15章:职责链模式-请求的链式处理定义:职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止结构:代码实现://抽象处理者abstract class Handler { //维持对下家的引用 protected Handler successor; public void setSuccessor(Handle原创 2020-11-12 19:10:16 · 592 阅读 · 0 评论 -
Java设计模式-14、享元模式-实现对象的复用
第14章:享元模式-实现对象的复用定义:享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。为了避免系统中出现大量相同或相似的对象在逻辑上每一个出现的字符都有一个对象与之对应,然而在物理上它们却共享同一个享元对象围棋棋盘中包含大量的黑子和白子,它们的形状、大小都一模一样,只是出现的位置不同而已。将具有相同内部状态的对象存储在享元池中享元池中的对象是可以实现共享的,需要的时候原创 2020-11-06 17:52:34 · 337 阅读 · 0 评论 -
Java设计模式-15、代理模式-通过代理对象访问
第15章:代理模式-通过代理对象访问定义:代理模式(Proxy Pattern):给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。结构:代码实现://抽象主题角色abstract class Subject { public abstract void Request();}//真实主题class RealSubject extends Subject { @Override public void Request() {原创 2020-11-06 17:51:36 · 317 阅读 · 0 评论 -
Java设计模式-13、外观模式-统一的入口
第13章:外观模式-统一的入口定义:外观模式:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。迪米特法则的一种具体实现(一个对象应该对其他对象保持最少的了解)又称:门面模式结构:代码实现://子系统class SubSystemA { public void MethodA() { //业务实现代码 }}class SubSystemB { public void MethodB()原创 2020-11-06 15:41:57 · 560 阅读 · 0 评论 -
Java设计模式-12、装饰模式-扩展系统功能
第12章:装饰模式-扩展系统功能定义:装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。用来取代继承关系。结构:代码实现://抽象构件interface Component { void operation();}//抽象装饰类class Decorator implements Component { private Component component; //维持一个对抽象构件对原创 2020-11-06 15:40:33 · 256 阅读 · 0 评论 -
Java设计模式-11、组合模式-树形结构的处理
第11章:组合模式-树形结构的处理定义:组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。递归处理杀毒软件需要对文件夹和具体文件进行杀毒,文件夹称为容器,具体文件称为叶子结构:代码实现://抽象构件abstract class Component { public abstract void add(Component c); //增加成员原创 2020-11-06 15:39:26 · 893 阅读 · 0 评论 -
Java设计模式-10、桥接模式-处理多维度变化
第10章:桥接模式-处理多维度变化定义:桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体模式或接口模式。结构:代码实现://实现类接口interface Implementor { public void operationImpl();}//抽象类abstract class Abstraction { protected Implementor impl; //定义实现类接口对象原创 2020-11-06 15:37:07 · 561 阅读 · 0 评论 -
Java设计模式-9、适配器模式-不兼容结构的协调
第9章:适配器模式-不兼容结构的协调定义:适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现关系)。在实际开发中,对象适配器的使用频率更高教务系统接口中有查找方法和排序方法,算法库有具体的实现方法,但源原创 2020-11-06 15:35:12 · 158 阅读 · 0 评论 -
Java设计模式-8、建造者模式
第8章: 建造者模式定义:建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的创建过程可以创建不同的表示。将汽车部件组装成一辆完整的汽车并返回给用户不同类型的游戏角色,其性别、脸型、服装、发型等外部特性都有所差异结构:代码实现://产品class Product { private String partA; //定义部件,部件可以是任意类型,包括值类型和引用类型 private String partB; private String partC;原创 2020-11-04 20:24:50 · 257 阅读 · 0 评论 -
Java设计模式-7、原型模式-克隆对象(深浅克隆)
第7章:原型模式-克隆对象定义:在使用原型模式时,我们需要首先创建一个原型对象,再通过复制这个原型对象来创建更多同类型的对象。通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,在Java中可以直接使用Object提供的**clone()**方法来实现对象的克隆,能够实现克隆的Java类必须实现一个标识接口Cloneable,表示这个Java类支持被复制。如果一个类没实现这个接口但是调用了clone()方法,Java编译器将抛出一个CloneNotSupportedException异原创 2020-11-04 20:23:38 · 574 阅读 · 0 评论 -
Java设计模式-6、单例模式-确保对象的唯一性
第6章:单例模式-确保对象的唯一性(重点)定义:单例模式(Singleton Pattern):确保某一个类只一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。三个要点:一是某个类只能一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例;任务管理器存在唯一性结构:代码实现:应用实例://负载均衡器LoadBalancer:单例类,class LoadBalancer { //1.私静态成员变量,存储唯一实原创 2020-11-04 20:21:28 · 760 阅读 · 0 评论 -
Java设计模式-5、抽象工厂模式
第5章:抽象工厂模式定义:**抽象工厂模式:**提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品。结构:代码实现:abstract class AbstractFactory { public abstract AbstractProductA createProductA(); //工厂方法一 public abstract AbstractProductB createProductB()原创 2020-11-04 20:20:27 · 113 阅读 · 1 评论 -
Java设计模式-4、工厂方法模式
第4章:工厂方法模式定义:工厂方法模式:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。结构:代码实现:应用实例:使用简单工厂方法模式,LoggerFactory中包含大量if-else if,职责过重//日志记录器工厂class LoggerFactory { //静态工厂方法 public static Logger createLogger(String args) { if (args.equa原创 2020-11-04 20:19:03 · 235 阅读 · 0 评论 -
Java设计模式-3、简单工厂模式
第3章:简单工厂模式定义:**简单工厂模式:**定义一个工厂类,它可以根据参数的不同,返回不同类的实例,被创建的实例通常都具有共同的父类。结构:代码实现://抽象产品abstract class Product { //所产品类的公共业务方法 public void methodSame() { //公共方法的实现 } //声明抽象业务方法 public abstract void methodDiff();}//具体产品clas原创 2020-11-04 20:15:20 · 97 阅读 · 0 评论 -
Java设计模式-1、什么是设计模式-2、七大原则
设计模式1第1章:什么是设计模式设计模式:是在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的关系。基本要素:模式名称问题解决方案效果第2章:七大设计原则单一职责原则:一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。DBUtil:负责连接数据库,包含数据库连接方法getConnection();CustomerDAO:负责操作数据库中的Customer表,包含对Customer表的增删改查等方法,如findCustome原创 2020-11-04 20:13:17 · 200 阅读 · 0 评论