java设计模式

2021-07-20 19:08

阅读:501

标签:code   重写   pack   抽象   备忘录模式   src   抽象工厂模式   拷贝   慢慢   

一直不是很了解设计模式,也不知道如何使用。现在慢慢一点一点了解。

创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
还有两类:并发型模式和线程池模式。

策略模式:不同行为,相同接口,环境决定使用那种行为
策略模式:男生追女生,结果是一样的,大部分都追到了,但是追的策略不一样,怎么样才能追到女生呢?那就要有好的策略。

原型模式:克隆,相同数据,不同对象
孙悟空有个特殊的技能,就是拔跟猴毛就可以变出一个孙悟空,这个孙悟空和真的孙悟空是长的一模一样,但是他们是不同的对象。
应用场景:主要是用来拷贝复杂的数据结构对象的数据

职责链模式
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,
将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。

角色
抽象处理者角色(Handler):定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。
具体处理者角色(ConcreteHandler):具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。

应用实例:过滤器链和拦截器链。

模板模式:固定流程

package template;

//冲饮料(拿出去卖钱了)
public abstract class Bevegrage {

//不能被重写
public final void create(){
//1、把水烧开
boilWater();
//2、把杯子准备好、原材料放到杯中
pourInCup();
//3、用水冲泡
brew();
//4、添加辅料
addCoundiments();
}

public abstract void pourInCup();

public abstract void addCoundiments();


public void brew(){
System.out.println("将开水放入杯中进行冲泡");
};

public void boilWater(){
System.out.println("烧开水,烧到100度可以起锅了");
}

}

不同的实现类实现pourInCup和addCoundiments方法。

 

观察者模式:

观察者模式的应用场景: .对一个对象状态的更新需要其他对象同步更新;,或者一个对象的更新需要依赖另一个对象的更新;.对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节,如消息推送。

实际应用案例:观察者模式还可以用于网络中的客户端和服务器,比如手机中的各种App的消息推送,服务端是观察者,各个手机App是被观察者,一旦服务器上的数据(如App升级信息)有更新,就会被推送到手机客户端。

类图:技术分享图片

 

java设计模式

标签:code   重写   pack   抽象   备忘录模式   src   抽象工厂模式   拷贝   慢慢   

原文地址:https://www.cnblogs.com/hzzll/p/9517032.html


评论


亲,登录后才可以留言!