![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
键盘歌唱家
一个贪财好色的俗人
展开
-
设计模式之代理模式
说到代理,很多人都会想到MyBatis框架中的代理对象mapper,而本文就简单的说一下这一模式 。现在给出这样的一个场景,卢泽龙喜欢某一位女生,但由于不好意思,就将表白的任务委托给了张帅(代理)静态代理模式这个模式需要代理、接口、接口实现类,并且代理也需要实现该接口,且聚合一个接口对象。接口:Ilovepackage proxy.statics;public interface ILove { void sayLove();}接口实现类:LoveDaopackage pr原创 2020-09-18 18:10:47 · 182 阅读 · 0 评论 -
设计模式之享元模式
享元模式(Flyweight Pattern)也叫蝇量模式:运用共享技术有效地支持大量细粒度的对象常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率享元模式经典的应用场景就是池技术了,String常量池、数据库连接池、缓冲池等等都是享元模式的原创 2020-09-17 15:10:49 · 119 阅读 · 0 评论 -
设计模式之外观模式
以电影院设备的开关等操作来说明,下面是传统设计的说明图:这样设计有什么问题了?如果是这样的话,客户端的操作会很乱。而外观模式就是将这些复杂的调用过程封装到一个类中,向外提供一个简单的接口供用户调用:下面直接上代码说明问题:子系统:public class TheaterLight { private static TheaterLight instance = new TheaterLight(); public static TheaterLight getInstance() {原创 2020-09-17 14:59:47 · 164 阅读 · 0 评论 -
设计模式之组合模式
以大学的管理层次说明该模式:这是采用继承的方法来说明院系的关系,但缺点是,其实学校、学院、系之间是组合关系,这样设计不能很好的实现管理操作。下面我将用组合模式来,优化这个代码,下面的组合模式的原理图:Component:public abstract class OrganizationComponent { private String name; // 名字 private String des; // 说明 protected void add(OrganizationCom原创 2020-09-17 14:46:48 · 96 阅读 · 0 评论 -
设计模式之装饰者模式
以辛巴克案例来阐述这一模式,星巴克有很多种单品咖啡,每个单品咖啡又可以加入很多调料,下面给出传统的设计图:因为单品和调料组合的多样性,这样设计就极容易出现类爆炸问题!于是有人就对方案一进行改进,改进后的设计图如下:虽然这样控制了类的数量,但增减调料时,代码维护量就变得非常大,不利于后期扩展和维护,为了解决这一困扰,我们就引出了装饰者模式:代码如下:Drink 类:public abstract class Drink { public String des; // 描述 privat原创 2020-09-17 14:35:17 · 87 阅读 · 0 评论 -
设计模式之桥接模式
给出下面的案例:现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:这样写,虽然非常容易理解,但扩展维护很难,极容易出现类爆炸问题,解决方法:桥接模式!下面展示用桥接模式改进上面的代码:Implementor://接口public interface Brand { void open(); void close(); void call();}Implementor的实现:vivo:public class Vivo implemen原创 2020-09-17 14:05:14 · 105 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式解决了下面的问题:比如我有220v的电源,可是我的手机需要的却是5v的电压,这种情况只能通过适配器的转化就能够将其转化。直接上代码说明问题:1.类适配器:(通过继承关系实现)被适配的类,相当于电源孔:package adapter.classadapter;//被适配的类public class Voltage220V { public int output220V() { int src = 220; System.out.println("电压=" + src + "原创 2020-09-11 15:54:11 · 118 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式的目的也是减少项目中的耦合关系:先用大部分程序员的思维写炒菜的代码:抽象的做菜类,规划好了做菜的步骤以及方法的执行顺序。package builder;public abstract class AbstractCook { public abstract void wash(); public abstract void cut(); public abstract void burn(); public void build() { wash(); cut原创 2020-09-09 20:15:16 · 153 阅读 · 0 评论 -
原型设计模式浅拷贝和热拷贝
学过Spring框架的同志应该都听过原型吧,在创建bean的时候可以指定prototype,这样bean就是原型模式,什么叫原型模式?就是将一个对象拷贝(复制)多份。比如下面的代码:public class Test { public static void main(String[] args) { A a1 = new A(1,2,3); A a2 = new A(1,2,3); A a3 = new A(1,2,3); A a原创 2020-09-09 19:16:53 · 186 阅读 · 0 评论 -
设计模式之单例模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。写法主要分为四大类:饿汉式,懒汉式,静态内部类,枚举下面一个一个进行展示:1.饿汉式:在类被加载的时候,即生成了一个单例对象,缺点是没有实现懒加载,可能造成内存浪费。//1.直接在创造时赋值class Luzelong{ private Luzelong(){} private static Luzelong lzl = new Luzel原创 2020-09-03 19:54:02 · 145 阅读 · 0 评论 -
一篇博客搞定设计模式七大原则
设计模式原则,其实就是程序员在编程时,应当遵守的原则,也就是设计模式的设计依据!本篇博客将给出的这七大设计模式的定义。1)、单一职责原则:(博主概括:让类或其方法事务单一化)概念:对类来说的,即一个类应该值负责一项职责。如类A负责两个不同的职责:职责1,职责2。当职责1需求变更而改变A时,肯造成职责2执行错误,所以需要将类A的粒度分解为A1,A2。注意事项:1)降低类的复杂度,一个类只负责一项职责。2)提高类的可读性,可维护性3)降低变更引起的风险4)通常情况下,我们应当遵守单一职责原则原创 2020-08-27 13:45:18 · 288 阅读 · 0 评论