
设计模式
文章平均质量分 56
更优雅的编写代码
美好生活521
这个作者很懒,什么都没留下…
展开
-
Java 设计模式之 State 状态模式
状态模式用于由状态决定行为的场景,原创 2021-07-27 12:14:45 · 173 阅读 · 0 评论 -
Java 设计模式之 Composite 组合模式
Composite原创 2021-07-31 22:56:28 · 195 阅读 · 0 评论 -
Java 设计模式之 Visitor 访问者模式
Visitor 访问者模式原创 2021-07-27 14:49:56 · 198 阅读 · 0 评论 -
Java 设计模式之 Observer 模式
这种模式抽象出三个角色,被观察者,观察者,事件。观察者:将观察者抽象为interface接口,将观察者的行为抽象为一个个方法,具体观察者通过实现观察者接口,并实现这些方法,来赋予具体的行为。被观察者:发出某些事件,将事件通知给观察者。事件:事件里将被观察者作为成员对象,这样需要对原对象进行处理,或者使用原对象的方法时,可以从事件里获得事件原对象。被观察者发出某事件,通知观察者,观察者根据事件作出响应。举个咖啡馆Cafe的例子,客户进来,要点餐,要结账,服务员会拿过来菜单,账单。观察者原创 2021-07-22 10:41:51 · 358 阅读 · 0 评论 -
Java 设计模式之 Abstract Factory 抽象工厂模式
在工厂方法基础上,将工厂的生产方法的返回类型从具体产品抽象为抽象产品,同时扩展工厂的方法,支持任意定制产品族,则工厂方法可以升级为抽象工厂模式,比如一家餐厅可以提供牛排(方法A),红酒(方法B),蔬菜汤(方法C),另一个餐厅可以提供水煮鱼,橙汁,乌鸡汤。抽象产品类:/** * 主菜抽象类 */public abstract class MainCourse { abstract void printName();}public abstract class Drink {原创 2021-07-20 12:40:34 · 140 阅读 · 0 评论 -
Java 设计模式之Bridge桥接模式
将抽象和具体实现两个维度分离,让他们独立发展,并且在抽象类里聚合一个具体实现,通过聚合替代继承,用于解决类爆炸的问题。这种模式要求对系统的抽象的理解和设计难度都比较大。例子:这里要对花,气球等装饰物进行显示,可以显示一个装饰物,也可以显示多个装饰物,那么将装饰物作为具体实现,将显示作为抽象类,在抽象类里有一个装饰物的引用,对抽象类进行扩展可以进行多次显示,对具体实现扩展为不同类型装饰物。Display,NumberDisplayDisplayImpl, FlowerDisplayImpl原创 2021-07-19 12:20:56 · 207 阅读 · 0 评论 -
Java 设计模式之装饰器模式
定义一个装饰类,给原有对象(被装饰者)加点新功能。实现:装饰者和被装饰者具有相同的接口,装饰者在被装饰者已有功能基础上加点新功能。例子,比如给冰激凌加点香草味,加点巧克力,冰淇淋和加料都有相同的接口食物。看代码,好不容易写出来的,理解了,以后再也不会蒙圈了。/** * 装饰类和被装饰类共同继承的抽象类 * 使装饰类和被装饰类具有一致性 */public abstract class Food { /** 待被装饰者和装饰者具体发挥 */ public abstrac原创 2021-07-17 13:44:24 · 517 阅读 · 0 评论 -
Java 设计模式之Mediator调节者模式
使用场景:对象之间的交互很复杂时,定义一个调节者对象封装一系列对象之间的交互,使原有对象之间解耦,只与调节者对象交互。结构模式:抽象调节者接口Mediator,具体调节者实现类ConcreteMediator抽象被调节者接口Colleague,具体被调节者实现类Buyer, Seller每个被调节者拥有一个调节者对象优点:降低对象之间的耦合度;将一对多关联转为一对一关联,提高系统灵活性,使系统易于扩展和维护缺点:当对象很多时,调节者的职责会很大,不好维护举个房屋买卖原创 2021-07-17 13:35:04 · 215 阅读 · 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 · 202 阅读 · 0 评论 -
Java 设计模式之代理模式
代理模式原创 2021-06-14 13:38:43 · 1203 阅读 · 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 · 98 阅读 · 0 评论 -
Java 设计模式之单例模式
单例模式原创 2021-05-25 21:29:48 · 98 阅读 · 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 · 152 阅读 · 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 · 173 阅读 · 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 · 291 阅读 · 0 评论 -
Java 设计模式之策略模式
策略模式原创 2021-05-24 20:04:32 · 128 阅读 · 0 评论