![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
MarchZhen
这个作者很懒,什么都没留下…
展开
-
[设计模式] - 委派模式 注重结果的老板
委派模式不属于23中设计模式中的一种。他和代理模式很像,负责任务的调用和分配,可以看做是一种特殊情况下的静态代理的全权代理,但是代理注重过程,而委派注重结果。委派模式在spring中应用很多,比如DispatchServlet就用到了委派模式。现在我们来实现一个场景,老板给项目经理下达任务,项目经理就会根据情况给每个员工派发任务,等任务完成再由项目经理汇报工作给老板。首先,创建一个员工的接口...原创 2019-04-06 12:11:03 · 196 阅读 · 0 评论 -
[设计模式] - 装饰者模式 要要切割闹,煎饼果子来一套
装饰者模式是指在不改变原有对象的基础上, 将功能附加到对象上,提供了比继承更有弹性的代替方案。装饰者模式适用场景用于扩展一个类的功能或给一个类添加附加职责动态的给一个对象添加功能,这些功能可以动态的撤销装饰者模式的应用场景比如说我早晨最爱吃的早点就是煎饼,夹油条或夹脆饼再来根烤肠,越想越香呀~~首先我们先创建一个抽象的BatterCake类public abstract clas...原创 2019-04-09 22:58:48 · 372 阅读 · 0 评论 -
[设计模式] - 代理模式 静态代理和动态代理(JDK和CGLib)实现
代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制这个对象的访问。代理模式属于结构型设计模式。使用代理模式主要有两个目的:保护目标对象增强目标对象。代理模式一般涉及到的角色有:抽象角色:声明真实对象和代理对象的共同接口,对应代理接口(Subject);真实角色:代理角色所代表的真实对象,是我们最终要引用的对象,对应委托类(RealSubject);代理角色:代...原创 2019-04-03 16:26:05 · 220 阅读 · 0 评论 -
[设计模式] - 适配器模式 亡羊补牢,犹未晚矣
适配器模式(adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。适配器模式适用场景已经存在的类,他的方法和需求不匹配的情况适配器模式不是软件你设计阶段考虑的设计模式,是随着软件维护,由于不同产品,不同厂家造成功能类似而接口不相同的情...原创 2019-04-08 23:24:19 · 170 阅读 · 0 评论 -
[设计模式] - 原型模式 拔一根毫毛吹出猴万个
原型模式(Prototype Pattern)是 创建型模式 的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。适用场景类初始化消耗资源较多new产生的对象需要比较繁琐的过程构造函数比较复杂循环体内产生大量的对象简单克隆创建基础ConcretePrototype,它实现了Prototype的cl...原创 2019-04-02 15:10:48 · 353 阅读 · 0 评论 -
[设计模式] - 观察者模式 “三年二班周杰伦,马上到训导处来”
观察者模式(Observer Pattern)定义了对象之间的一对多依赖,让多个观察者对象同时监听一个主体对象,当主体对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新,属于行为型模式。观察者模式有时也叫发布订阅模式。观察者模式适用场景主要用于在关联行为之间建立一套出发机制的场景,如朋友圈动态通知,邮件通知等等。在观察者模式中有如下角色:Subject抽象主题(抽象被观察者):抽...原创 2019-04-11 14:39:50 · 223 阅读 · 0 评论 -
[设计模式] - 模板方法 把大象放冰箱,拢共分几步?
模板方法模式(Template Method)是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。模板方法的结构抽象模板(Abstract Template):定义了一个或多个抽象操作,以便让子类实现。逻辑的组成步骤在相应...原创 2019-04-07 22:54:14 · 453 阅读 · 0 评论 -
[设计模式] - 单例模式(Singleton Pattern)全方式解析
单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。饿汉式单例饿汉式单例是在类加载时就立即初始化,并且创建单例对象。在线程还没有出现前就实例化,不存在线程安全问题。public class HungrySingleton { private static final HungrySingleton ...原创 2019-04-01 22:58:59 · 267 阅读 · 0 评论 -
[设计模式] - 策略模式 多算法选择的福音
策略模式(Strategy Pattern)是指定义了算法家族、分别封装后,让他们相互之间可以互相替换,次模式让算法的变化不会影响到使用算法的用户。策略模式的结构封装类:也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。抽象策略:通常情况下为一个接口,当各个实现类中存在着重复的逻辑时,则使用抽象类来封装这部分公共的代码,此时,策略模式看上去更像是模版方法模式。具体策略:...原创 2019-04-06 23:58:12 · 401 阅读 · 0 评论 -
[设计模式] - 工厂模式(Factory Pattern)简单到复杂之路
简单工厂模式工厂对象决定创建出哪种产品,工厂类负责创建的对象比较少,客户端只需要传入工厂类的参数,对于如何创建并不需要关心。核心工厂类public class AppleFactory { IApple create(Class clazz){ try { if (clazz != null){ IApple...原创 2019-04-01 15:37:58 · 154 阅读 · 0 评论 -
[设计模式] - 部分设计模式的对比总结
设计模式应当是程序员的内功心法,总结的是前人的经验。可以帮助我们提升代码的可读性、可扩展性;降低维护成本,解决复杂的业务问题。但也不能为了套用设计模式而去使用设计模式。设计模式是在我们迷茫时提供的一种解决方案,或者说用好设计模式可以防范于未然。回顾软件设计原则说到设计模式,一定要了解软件设计原则。首先回顾一下软件设计七大原则:设计原则解释开闭原则对扩展开放,对修改关闭...原创 2019-04-16 22:07:25 · 221 阅读 · 0 评论