设计模式
文章平均质量分 88
卍暴力出奇迹卍
这个作者很懒,什么都没留下…
展开
-
设计模式学习之适配器模式
文章目录定义对象适配器应用类适配器双向适配器缺省适配器总结优缺点适用场景参考定义将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。注意:定义中所提及的接口是指广义的接口,它可以表示一个方法或者方法的集合适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。实际开发中,对象适配器的使用频率更高原创 2021-02-12 19:53:56 · 382 阅读 · 1 评论 -
设计模式之建造者模式
建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,是一种对象创建型模式类图实现产品,被构建的复杂对象(包含多个成员变量)package design.builder.realize;/* * *@author:zzf *@time:2020-12-22 * */public class Product { //定义部件,部件可以是任意类型,包括值类型和引用类型 private String partA; private S原创 2020-12-22 20:48:49 · 414 阅读 · 0 评论 -
设计模式之桥接模式
桥接模式将抽象部分与它的实现部分解耦,使得两者都能够独立变化,是一种对象结构型模式类图实现实现类接口,声明基本操作,与抽象类关联package design.bridge;/* * *@author:zzf *@time:2020-12-22 * */public interface Implementor { public void operationImpl();}具体实现类package design.bridge;/* * *@author:zz原创 2020-12-22 17:13:12 · 301 阅读 · 0 评论 -
设计模式学习之组合模式
组合模式组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合对象类图实现Component,抽象构件,可以是接口或抽象类,为叶子构件和容器构件对象声明接口,在该角色中可以包含所有子类共有行为的声明和实现。在抽象构件定义了访问及管理它的子构件的方法,如增加、删除、获得子构件package design.composite.realize;/* * *@author:zzf *@time:2020-12-22 * */public原创 2020-12-22 13:28:43 · 307 阅读 · 0 评论 -
设计模式之原型模式
原型模式使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象,是一种对象创建型模式类图通用的实现方法抽象原型类package design.prototype;/* * *@author:zzf *@time:2020-12-21 * */public abstract class Prototype { public abstract Prototype clone();}具体原型类package design.prototype;/*原创 2020-12-21 23:45:20 · 314 阅读 · 0 评论 -
设计模式学习之享元模式
享元模式运用共享技术有效地支持大量细粒度对象的复用,是一种对象结构型模式类图实现抽象享元类package design.flyweight.realize;/* * *@author:zzf *@time:2020-12-21 * */public abstract class Flyweight { public abstract void operation(String extrinsicState);}具体享元类package design.flywei原创 2020-12-21 17:44:14 · 255 阅读 · 0 评论 -
设计模式学习之模板方法模式
模板方法模式定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。它是一基于继承的代码复用技术,是类行为型模式类图实现抽象类定义了一系列基本操作,这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重定义或实现这些步骤。同时在抽象类中实现了一个模板方法,用于定义一个算法框架,模板方法不仅可以调用在抽象类中实现的基本方法,也可以调用在抽象类的子类中实现的基本方法,还可以调用其他对象中的方原创 2020-12-21 16:11:18 · 1130 阅读 · 0 评论 -
设计模式学习之职责链模式
职责链模式避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止,是一种对象行为型模式类图实现抽象处理者package design.cor.realize;/* * *@author:zzf *@time:2020-12-20 * */public abstract class Handler { //维持对下家的引用 protected Handler succe原创 2020-12-20 22:33:22 · 692 阅读 · 0 评论 -
设计模式之代理模式
代理模式给某一个对象提供一个代理点或占位符,并由代理对象来控制对原对象的访问,是一种对象结构型模式类图实现Subject,抽象主题角色,声明了真实主题和代理主题的共同接口package design.proxy;/* * *@author:zzf *@time:2020-12-20 * */public abstract class Subject { public abstract void request();}RealSubject,真实主题角色,定义了代理原创 2020-12-20 21:24:25 · 177 阅读 · 0 评论 -
设计模式学习之外观模式
外观模式为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,是一种对象结构型模式类图实现SubSystem子系统package design.facade;/* * *@author:zzf *@time:2020-12-20 * */public class SubSystemA { public void methodA(){ }}package design.facade;/* * *@a原创 2020-12-20 17:35:01 · 201 阅读 · 1 评论 -
设计模式学习之观察者模式
观察者模式定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时其相关依赖对象皆得到通知并被自动更新类图实现原创 2020-12-20 13:06:49 · 300 阅读 · 2 评论 -
设计模式学习之装饰模式
装饰模式动态地给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案类图实现定义抽象构件package design.decorator;/* * *@author:zzf *@time:2020-12-19 * */public abstract class Component { public abstract void operation();}定义具体构件package design.decorator;/*原创 2020-12-19 23:06:34 · 468 阅读 · 1 评论 -
设计模式学习之抽象工厂模式
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类,它是一种对象创建型模式类图AbstractProductA和AbstractProductB是两个抽象产品ConcreteProduct就是对两个抽象产品的具体分类的实现AbstractFacroty是抽象工厂接口,里面包含所有产品创建的抽象方法,而ConcreteFactory就是具体工厂应用实例某软件公司要开发一套界面皮肤库,可以对基于Java的桌面软件进行界面美化。用户在使用时可以通过菜单来选择皮肤,不同的原创 2020-12-19 17:53:12 · 343 阅读 · 1 评论 -
设计模式学习之工厂方法模式
工厂方法模式定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化,工厂方法模式让一个类的实例化延迟到子类,它是一种类创建型模式类图实现抽象工厂package design.factory;/* * *@author:zzf *@time:2020-12-19 * */public interface Factory { public Product factoryMethod();}抽象产品package design.factory;/* *原创 2020-12-19 15:40:27 · 160 阅读 · 1 评论 -
设计模式学习之简单工厂模式
简单工厂模式定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类类图实现抽象产品类package design.simpleafactory;/* * *@author:zzf *@time:2020-12-18 * */public abstract class Product { //所有产品类的公共业务方法 public void methodSame(){ //公共方法的实现 }原创 2020-12-19 12:08:43 · 125 阅读 · 1 评论 -
设计模式学习之单例模式
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点单例模式的实现实现过程注意三点:(1)单例类构造函数的可见性为private(2)提供一个类型为自身的静态私有成员变量(3)提供一个公有的静态工厂方法饿汉式(在类加载时单例对象就已创建)package singleton;public class EagerSingleton { private static final EagerSingleton instance = new EagerSingleton();原创 2020-12-18 21:50:22 · 840 阅读 · 1 评论 -
设计模式学习之策略模式
策略模式定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法可以独立于适用它的客户而变化策略模式的关键在于:将行为及其运作方式抽象为策略和策略实现。类图实现步骤定义抽象策略类package design.strategy;/* * *@author:zzf *@time:2020-12-18 * */public abstract class Strategy { public abstract void algorithm();//声明抽象算法原创 2020-12-18 18:08:25 · 1222 阅读 · 3 评论 -
设计模式学习之状态模式
定义允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类,是一种对象行为型模式状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。类图优点:(1)状态模式封装了状态的转换规则,可以将状态的代码封装在环境类或具体类中(2)状态模式将所有与某个状态有关的行为放到一个类中,只需注入一个不同的状态对象即可使环境对象拥有不同的行为(3)状态模式允许状态转换逻辑与状态对象合成一体,而不是提供一原创 2020-12-18 14:57:34 · 579 阅读 · 0 评论