![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
IT逐風者
这个作者很懒,什么都没留下…
展开
-
设计模式----建造者模式
建造者模式解决的是在属性较多时构造对象繁琐的问题。public abstract class Product { private String cpu; private String memory; private String DisplayCard; protected List<String> parts = new ArrayList<>(); public void add(String part){ pa原创 2021-10-11 23:18:17 · 67 阅读 · 0 评论 -
设计模式----代理模式
GoF中的代理模式定义:代理模式给某一个对象提供一个代理或者占位符,并由代理对象来控制对原对象的访问,属于结构型模式。在实现形式上分为两种静态代理和动态代理。设计动机由于跨越网络、或者安全方面的原因,不能直接或者不需要直接被访问,直接访问的代价会给系统带来不必要的复杂性,如可能会导致访问延迟、运行效率低下等问题,通过引入一个代理对象代替目标对象完成客户端程序对目标对象的各种操作要求,从而实现目标对象与客户端以透明的方式进行交互。按照功能可以分为远程代理、虚拟代理、保护代理、缓冲代理、智能引用原创 2021-10-09 09:38:18 · 134 阅读 · 0 评论 -
设计模式----组合模式
组合模式属于对象的结构型模型,他将对象组织到树形结构中,用来描述整体和部分的关系。Gof给的定义:组合模式组合成多个对象形成树形结构表示整体-部分的结构层次。组合模式将单个对象和组合对象(容器对象)的使用具有一致性解决的问题:针对客户端代码过多依赖于容器对象内部的复杂结构,如果容器对象内部结构发生改变,则客户端代码也需要过多的修改,从而导致代码维护性差、扩展性差等弊端。应用场景:当需求中体现的是部分与整体层次的结构时,以及希望用户代码忽略组合对象与单个对象的不同,统一使用组合结构中的所有原创 2021-10-07 23:05:29 · 56 阅读 · 0 评论 -
设计模式----观察者模式
观察者模式定义了对象间一对多的关系,当一个对象状态变化时,所有依赖它的对象都得到通知并将做出相应的反应。Gof中的定义:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,是他们能够自动更新。应用场景:1、监听器2、SpringAOP切面3、hook4、callback观察者UML类图如下源事件(source)源事件提供一个接口用来注册、删除、通知观察者角色,可以用一个抽象类或者接口来实.原创 2021-10-07 19:17:25 · 73 阅读 · 0 评论 -
设计模式----装饰者模式
装饰者模式是对客户透明的方式,动态的给对象附加更多的功能和责任,就是不用创建更多的子类的情况下就可以将对象的功能进行扩展。优点:避免了子类爆炸的问题,解决了对于一个产品功能动态扩展的问题,其UML类图如下所示构成:1、抽象构件(Component)定义对象的接口,用来给对象增加新的功能2、具体构件(ConcreteComponent)定义具体的构件对象,实现了抽象构件中声明的方法,是被装饰的对象,也是给这个对象添加新的功能3、抽象装饰器(Decorator)抽象装饰器是.原创 2021-10-06 21:02:05 · 193 阅读 · 0 评论 -
设计模式----中介者模式(调停者模式)
对于一个模块,可能由多个对象构成,而且这些对象之间可能存在相互的引用,如下图所示:为了减少对象之间复杂的引用关系,降低系统的耦合度,因此引出了中介者模式,也是中介者模式创建的动机。GoF给出的定义:中介者模式就是用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而使其耦合松散,从而可以独立地改变他们之间的交互。中介者模式是一种对对象之间的关系进行封装,是一种对象行为型模式,这样设计可以使各个对象在不需要知道其他对象的具体信息情况下通过中介者对象来与之通信。.原创 2021-10-06 17:04:56 · 132 阅读 · 0 评论 -
设计模式----抽象工厂模式
工厂方法是具体工厂负责生产具体的产品,每个工厂都负责一种产品,而这些产品都属于同一类。抽象工厂和工厂方法的区别是抽象工厂又对所有类别的工厂进行了封装,可以生产一族产品,如下图所示生产手机和笔记本电脑两种物品1、建立一个抽象工厂,包含多个抽象类别public interface AbstractFactory { MobilePhone getMobilePhone(); Laptop getLaptop();}2、建立对应的抽象类public abstract c原创 2021-10-06 00:09:46 · 74 阅读 · 0 评论 -
设计模式----工厂方法
工厂方法这种设计模式在简单工厂模式上进行了改进,主要解决的是方便增加属于同一类的新的产品。工厂方法是由四部分组成的:1、抽象产品(对具体产品进行封装)2、抽象工厂(对具体工厂进行封装)3、具体产品4、具体产品工厂简单工厂是将实例化对象的工作推迟到一个专门负责创建对象的工厂类中,但是这是在我们预知的情况下可以动态的创建新的产品,所以存在产品类别量的局限性。但是预知的产品类量有限,对于无法预知的类就违背了“对扩展开放,对修改封闭的原则”。问题:具体工厂类创建工作无法满足我们的需.原创 2021-10-05 16:51:39 · 90 阅读 · 0 评论 -
工厂模式之简单工厂
简单工厂的构成分为三部分:1、抽象工厂2、具体工厂3、实体类举例:用工厂模式实现三种发送信息的方式:邮件、短信、微信;首先建立一个抽象工厂:public interface Sender{ void send();}第二步:建立三个具体类public class EmailSender implments Sender{ public void send(){ System.out.print("send a email");原创 2021-10-05 16:03:43 · 110 阅读 · 0 评论 -
四种单例模式的实现
1、懒汉式:public class Singleton01{ private static final INSTANCE = new Singleton01(); private Singleton01(){}; public static Singleton getInstance(){ return INSTANCE; } }2、线程安全的饿汉式public class Singleton02{原创 2021-10-04 20:14:34 · 58 阅读 · 0 评论 -
策略模式编程练习
策略模式是多态的一种很好的体现,通过设计一个策略接口,然后根据具体的算法策略执行具体的逻辑,这里体现的是面向对象的开闭原则,对修改封闭,对扩展开放,其最大的好处是拥有良好的扩展性。包含三个部分:抽象策略,具体的策略实现,策略调用环境下面通过售卖电影票练习来说明有三种优惠,优惠方式如下:1、学生8折2、儿童减10块3、会员半价首先建立一个抽象的折扣策略public interface DisCountStrategy { double discount(double原创 2021-10-04 19:56:24 · 171 阅读 · 0 评论