设计模式
文章平均质量分 64
23种设计模式说明及使用
可可嘻嘻大老虎
这个作者很懒,什么都没留下…
展开
-
委派模式
委派模式委派模式(Delegate Pattern)不属于GoF23中设计模式。委派模式的基本作用就是负责任务的调用个分配,和代理模式相似但是代理模式注重过程而委派模式注重的是结果委派模式在spring中应用的非常多,比如我们熟悉的DispatcherServlet老板给项目经理下达任务,项目经理会根据实际情况把任务分配给每一个员工,等员工完成任务,再由项目经理向老板汇报这里的项目经理就是老板委派帮自己干活的人具体实现public interface IEmployee { public原创 2021-01-28 10:49:44 · 164 阅读 · 0 评论 -
模板模式
模板模式模板模式又叫做模板方法模式(Template Method Pattern),是指定义一个算法骨架,并允许子类为一个或者多个步骤提供实现。模板模式使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为型设计模式。如何把大象放进冰箱?打开冰箱门–>把大象塞进冰箱–>关闭冰箱门如何把长颈鹿放进冰箱?打开冰箱门–>把大象拿出来–>把长颈鹿塞进去–>关闭冰箱门上面的例子打开冰箱和关闭冰箱是固定的,可以提到抽象类中实现,抽象类的子类只需要实现中间不同原创 2021-01-27 11:32:46 · 199 阅读 · 2 评论 -
适配器模式
适配器模式适配器模式(Adapter Pattern)是指将一个类的接口转换成用户期望的另一个接口,使原本接口不兼容的类可以一起工作,属于结构型设计模式结构型模式(Structural Pattern)关注如何将现有类或对象组织在一起形成更加强大的结构可分为两种:类结构型模式:关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系对象结构型模式:关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象,然后通过该对象调用其方法。更符合“合成复用原创 2021-01-26 17:08:58 · 115 阅读 · 0 评论 -
原型模式
原型模式原型模式:(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象适用场景类初始化消耗资源较多使用new生成一个对象需要非常繁琐的过程(数据准备,访问权限等)构造函数比较复杂在循环体中产生大量对象具体实现浅克隆定义:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。浅克隆只是复制一个当前对象的引用出来,相当于在栈中开辟一块空间下面例子的运行结果:com.mashib原创 2021-01-25 21:13:45 · 86 阅读 · 0 评论 -
代理模式
代理模式介绍代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的主要优点有:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性其主要缺点是:代理模式会造成系统设计中类的数量增加在客户端和目标对象之间增加一个代理对象,会造成请求处理速原创 2021-01-21 10:56:20 · 166 阅读 · 1 评论 -
观察者模式
观察者模式模式的定义与特点观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其主要优点如下。降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。目标与观察者之间建立了一套触发机制。它的主要缺点如下。目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。当观察者原创 2021-01-20 22:16:12 · 94 阅读 · 0 评论 -
装饰者模式
装饰者装饰模式的定义与特点装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰(Decorator)模式的主要优点有:装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效果装饰器模式完全遵守开闭原则其主要缺点是:装饰模式会增加许多子类,过度使用会增加程序得复杂性。装饰模式的应用场景前面讲解了原创 2021-01-19 10:23:14 · 130 阅读 · 0 评论 -
工厂模式
工厂模式工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。按实际业务场景划分,工厂模式有 3 种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。在简单工厂模式中创建实例的方法通常为静态(static)方法,因此简单工厂模式(Simple F原创 2021-01-18 13:36:23 · 221 阅读 · 0 评论 -
策略模式
策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍**意图:**定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。**主要解决:**在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。**何时使用:**一个系统有许多许多类,而区分它们的只原创 2021-01-15 11:16:14 · 111 阅读 · 0 评论 -
单例模式
饿汉式优点:逻辑简单,线程安全缺点:用不用这个对象,在类加载到jvm时都会创建出来。不用的话就是无故占内存public class Main1 { //类加载时创建对象 private static final Main1 INSTANCE=new Main1(); //私有化构造方法 private Main1() {} public static Main1 getInstance() { return INSTANCE; } public static void原创 2021-01-15 11:15:42 · 118 阅读 · 2 评论 -
架构设计原则
开闭原则开闭原则(Open-Closed Principle, OCP)是指一个软件实体(如类,模块和函数)应该对扩展开放,对修改关闭。优势:开闭原则强调用抽象构建框架,用实现扩展细节,可以提高软件系统的可复用性及可维护性。//我的课程(抽象出来)public interface ICourse { Integer getId(); String getName(); Double getPrice();}//java课程实现课程接口,新增python课程,我只需要原创 2021-01-15 11:15:06 · 186 阅读 · 1 评论