设计模式
文章平均质量分 56
更优雅的编写代码
美好生活521
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 设计模式之 State 状态模式
状态模式用于由状态决定行为的场景,原创 2021-07-27 12:14:45 · 207 阅读 · 0 评论 -
Java 设计模式之 Composite 组合模式
Composite原创 2021-07-31 22:56:28 · 225 阅读 · 0 评论 -
Java 设计模式之 Visitor 访问者模式
Visitor 访问者模式原创 2021-07-27 14:49:56 · 230 阅读 · 0 评论 -
Java 设计模式之 Observer 模式
这种模式抽象出三个角色,被观察者,观察者,事件。 观察者:将观察者抽象为interface接口,将观察者的行为抽象为一个个方法,具体观察者通过实现观察者接口,并实现这些方法,来赋予具体的行为。 被观察者:发出某些事件,将事件通知给观察者。 事件:事件里将被观察者作为成员对象,这样需要对原对象进行处理,或者使用原对象的方法时,可以从事件里获得事件原对象。 被观察者发出某事件,通知观察者,观察者根据事件作出响应。 举个咖啡馆Cafe的例子,客户进来,要点餐,要结账,服务员会拿过来菜单,账单。 观察者原创 2021-07-22 10:41:51 · 392 阅读 · 0 评论 -
Java 设计模式之 Abstract Factory 抽象工厂模式
在工厂方法基础上,将工厂的生产方法的返回类型从具体产品抽象为抽象产品,同时扩展工厂的方法,支持任意定制产品族,则工厂方法可以升级为抽象工厂模式,比如一家餐厅可以提供牛排(方法A),红酒(方法B),蔬菜汤(方法C),另一个餐厅可以提供水煮鱼,橙汁,乌鸡汤。 抽象产品类: /** * 主菜抽象类 */ public abstract class MainCourse { abstract void printName(); } public abstract class Drink {原创 2021-07-20 12:40:34 · 182 阅读 · 0 评论 -
Java 设计模式之Bridge桥接模式
将抽象和具体实现两个维度分离,让他们独立发展,并且在抽象类里聚合一个具体实现,通过聚合替代继承,用于解决类爆炸的问题。 这种模式要求对系统的抽象的理解和设计难度都比较大。 例子: 这里要对花,气球等装饰物进行显示,可以显示一个装饰物,也可以显示多个装饰物,那么将装饰物作为具体实现,将显示作为抽象类,在抽象类里有一个装饰物的引用,对抽象类进行扩展可以进行多次显示,对具体实现扩展为不同类型装饰物。 Display,NumberDisplay DisplayImpl, FlowerDisplayImpl原创 2021-07-19 12:20:56 · 249 阅读 · 0 评论 -
Java 设计模式之装饰器模式
定义一个装饰类,给原有对象(被装饰者)加点新功能。 实现:装饰者和被装饰者具有相同的接口,装饰者在被装饰者已有功能基础上加点新功能。 例子,比如给冰激凌加点香草味,加点巧克力,冰淇淋和加料都有相同的接口食物。 看代码,好不容易写出来的,理解了,以后再也不会蒙圈了。 /** * 装饰类和被装饰类共同继承的抽象类 * 使装饰类和被装饰类具有一致性 */ public abstract class Food { /** 待被装饰者和装饰者具体发挥 */ public abstrac原创 2021-07-17 13:44:24 · 549 阅读 · 0 评论 -
Java 设计模式之Mediator调节者模式
使用场景: 对象之间的交互很复杂时,定义一个调节者对象封装一系列对象之间的交互,使原有对象之间解耦,只与调节者对象交互。 结构模式: 抽象调节者接口Mediator,具体调节者实现类ConcreteMediator 抽象被调节者接口Colleague,具体被调节者实现类Buyer, Seller 每个被调节者拥有一个调节者对象 优点: 降低对象之间的耦合度; 将一对多关联转为一对一关联,提高系统灵活性,使系统易于扩展和维护 缺点: 当对象很多时,调节者的职责会很大,不好维护 举个房屋买卖原创 2021-07-17 13:35:04 · 257 阅读 · 0 评论 -
Java 设计模式之Facade门面模式
场景:当外界某个对象与某个系统内的多个组件都要进行交互时,这个系统可以对外提供一个统一的接口,与外界这个对象对接,这样可以对外隐藏系统内部的复杂性,接口内部调用各个组件功能。 实现:定义一个Facade, 有多个组件就定义多个MemberA,MemberB等等。 例子: package com.example.demo.designpattern.facade; /** * 某系统内组件A */ public class MemberA { public void work() {原创 2021-07-17 13:25:14 · 238 阅读 · 0 评论 -
Java 设计模式之代理模式
代理模式原创 2021-06-14 13:38:43 · 1237 阅读 · 1 评论 -
Java 设计模式之原型模式
原型模式主要用于复制对象,尤其是创建过程很复杂的情况,原型模式可以简化创建过程,提高性能。 实现原型模式需要两点:第一是要实现Cloneable 接口,第二是重写Object类的clone方法。 这里只说明如何实现原型模式,模拟场景无法体现提高性能。 1、实现Cloneable 接口 public class Prototype implements Cloneable { private long count; public Prototype(long count) {原创 2021-05-25 22:01:35 · 121 阅读 · 0 评论 -
Java 设计模式之单例模式
单例模式原创 2021-05-25 21:29:48 · 114 阅读 · 0 评论 -
Java 设计模式之工厂方法
工厂方法,Factory Method,也是将实例的生成交给子类,工厂决定产品类型。 1、抽象产品类 public abstract class Product { public abstract void getName(); public abstract void getMaterial(); } 2、具体产品类 public class Wood extends Product { private String name; private String m原创 2021-05-24 22:08:26 · 178 阅读 · 0 评论 -
Java 设计模式之模板方法模式
模板方法模式,Template Method,就是在父类中定义一个模式,具体由子类来实现,并且子类中可以定义特有的方法。 1、定义抽象类,其中create为模板方法,不能被重写 public abstract class Template { public abstract void createWindow(); public abstract void createDoor(); public abstract void ground(); public fina原创 2021-05-24 21:09:33 · 198 阅读 · 0 评论 -
Java 设计模式之构造者模式
构造者模式和策略模式比较类似,都是由一个调用方和被调用方组成,只是构造者模式一般用于更复杂的情况,虽然具体的工作由被调用方实现,但是调用方确定实现的先后顺序。 1、定义Builder接口 public interface Builder { void window(); void door(); void floor(); void ground(); void yard(); } 2、Builder接口的两个实现类 public class HouseB原创 2021-05-24 20:31:03 · 315 阅读 · 0 评论 -
Java 设计模式之策略模式
策略模式原创 2021-05-24 20:04:32 · 146 阅读 · 0 评论
分享