![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 63
αβγθ
这个作者很懒,什么都没留下…
展开
-
设计模式-原则
首先介绍一下设计模式。软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。23条设计模式又名为GoF23[“四人组”(Gang of Four,GoF)],可以看作是一个解决方案。主要内容:抽象和思维,对类的封装,继承,多态和类的关联和组合关系。面向对象的七大原则1、开闭原则(Open Close Principle)*对扩展开放,对修改关闭。2、里氏替换原则(Liskov Substitution原创 2021-05-04 21:33:21 · 557 阅读 · 0 评论 -
设计模式-单例模式
单例模式属于创建者模式。单例模式饿汉式,懒汉式,单例模式特点就是构造器私有化饿汉式单例有可能浪费内存空间public class Hungry{ private Hungry(){} private final static Hungry HUNGRY = new Hungry(); // private final static Singleton = new Singleton() publci static Hungry getInstance(){原创 2021-05-04 21:35:54 · 581 阅读 · 0 评论 -
设计模式-工厂模式
⼯⼚⽅法、抽象⼯⼚都属于创建者模式。⼯⼚模式实现了创建者和调用者的分离。工厂(Factory)模式遵循原则——开闭原则,依赖倒转原则,迪米特法则核心本质:实例化对象不使用new,用工厂方法代替。将选择实现类,创建对象统一管理和控制,将调用者和实现类解耦。简单(静态)工厂生产同一等级结构中的任意产品。需要扩展原先的代码。将之前的new xx,写入到一个工厂类中,不必关心new的过程,只需要写入类型,得到对象就行。public class CarFactory{ // 方法一,但是会违反原创 2021-05-04 21:37:14 · 628 阅读 · 0 评论 -
设计模式-建造者模式
建造者属于创建者模式。建造者模式FactoryBuilder,创建型模式。将复杂对象的构建与它的表示分离。工厂模式是造零件,建造者模式是进行组装。同样的建造过程有不同的表示抽象的建造者public abstract class Builder{ abstract void buildA(); // 零件 // 产品 abstract Product getProduct(); // 产品里有零件的具体设置,getter/setter方法 }具体的建造者:工人,worker是原创 2021-05-04 21:38:27 · 818 阅读 · 0 评论 -
设计模式-原型模式(Prototype)
原型模式(Prototype)JS原型,克隆,对象hashcode不同,但内容相同例子:Prototype,Cloneable接口,clone()方法,native[Native Method(原生方法)]浅克隆视频原型public class Video implements Cloneable{ private String name; private Date createTime; @Override protected Object clone() throws原创 2021-05-07 16:17:20 · 913 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式USB网线转换器要被适配的类–网线public class Adaptee{ public void request(){ // 返回上网 }}转接头口USB–接口public interface NetToUSB{ // 接口转换器的抽象实现 // 作用:处理请求 public void handleRequest();}转接头–实现类–真正的适配器继承,类适配器模式// 使用USB,连接网线public c原创 2021-05-07 16:18:13 · 898 阅读 · 1 评论 -
设计模式-桥接模式Bridge
桥接模式Bridge桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。是一种对象结构模式,称为炳体(Handle and Body)模式或者接口模式。减少子类。桥接(Bridge)模式包含以下主要角色。抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。实现化(Implementor)角色:定义实现化角色原创 2021-05-07 16:19:48 · 919 阅读 · 2 评论 -
设计模式-代理模式
代理模式SpringAop的底层,动态代理例子:租房中介代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;静态代理角色分析:抽象角色:一般会属于接口或者抽象类来解决真实角色:被代理的角色代理角色:代理真实的角色,一般又一些附属操作客户:访问代理对象的人例子:租房接口:public interface Rent{ public void rent();}房东:public class Host implements Rent{ publi原创 2021-05-07 16:20:46 · 918 阅读 · 1 评论 -
设计模式-装饰模式(Decorator)
对现有产品增加新的功能或美化其外观,动态地扩展其功能。优点:装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用目的:使用组合关系来创建一个包装对象(即装饰对象)来包裹真实对象,并在保持真实对象的类结构不变的前提下,为其提供额外的功能。装饰器模式主要包含以下角色。抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。具体构件(ConcreteComponent)角色:实现抽象构件,通过装饰角色为其添加一些职责。抽象装饰(D原创 2021-05-07 16:22:07 · 941 阅读 · 0 评论 -
设计模式-享元模式
享元模式动机:当对象数量太多时,将导致运行代价过高,带来性能下降等问题。运用共享技术来有效地支持大量细粒度对象(较小的对象,它所包含的内部状态较少)的复用。是一种 *对象结构型模式*共享通⽤对象,减少内存的使⽤,提升系统的访问效率。内部状态和外部状态。内部状态(Intrinsic State)指对象共享出来的信息,存储在享元信息内部,并且不会随环境的改变而改变;外部状态(Extrinsic State)指对象得以依赖的一个标记,随环境的改变而改变,不可共享。外部状态和内部状态是相互独立的,原创 2021-05-20 16:21:23 · 1063 阅读 · 0 评论 -
设计模式-组合模式
组合模式(Composite Pattern)将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,组合模式定义了如何将容器对象和叶子对象进行递归组合,使用户对单个对象和组合对象具有一致的访问性。组合模式最关键的地方:叶子对象和组合对象实现相同的接口。这就是组合模式能够将叶子节点和对象节点进行一致处理的原因。组合模式主要包含如下几个角色:抽象构件(Component)角色:组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部原创 2021-05-22 21:33:38 · 1003 阅读 · 0 评论