设计模式
This commit is contained in:
parent
efc1088cc8
commit
a5a3821857
@ -0,0 +1,12 @@
|
||||
package com.heibaiying.behavioral.chain_of_responsibility;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class Application {
|
||||
private String title;
|
||||
/*请假天数*/
|
||||
private int dayNum;
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.heibaiying.behavioral.chain_of_responsibility;
|
||||
|
||||
public class DepartManager extends Leader {
|
||||
|
||||
@Override
|
||||
public void approval(Application application) {
|
||||
System.out.println(application.getTitle() + "被部门经理审批通过");
|
||||
if (application.getDayNum() >= 5) {
|
||||
leader.approval(application);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.heibaiying.behavioral.chain_of_responsibility;
|
||||
|
||||
public class GroupLeader extends Leader {
|
||||
|
||||
@Override
|
||||
public void approval(Application application) {
|
||||
System.out.println(application.getTitle() + "被组长审批通过");
|
||||
if (application.getDayNum() >= 3) {
|
||||
leader.approval(application);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.heibaiying.behavioral.chain_of_responsibility;
|
||||
|
||||
public abstract class Leader {
|
||||
|
||||
protected Leader leader;
|
||||
|
||||
public Leader setNextLeader(Leader leader) {
|
||||
this.leader = leader;
|
||||
return leader;
|
||||
}
|
||||
|
||||
public abstract void approval(Application application);
|
||||
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.heibaiying.behavioral.chain_of_responsibility;
|
||||
|
||||
public class President extends Leader {
|
||||
|
||||
@Override
|
||||
public void approval(Application application) {
|
||||
System.out.println(application.getTitle() + "被总经理审批通过");
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.heibaiying.behavioral.chain_of_responsibility;
|
||||
|
||||
public class ZTest {
|
||||
public static void main(String[] args) {
|
||||
GroupLeader groupLeader = new GroupLeader();
|
||||
DepartManager departManager = new DepartManager();
|
||||
President president = new President();
|
||||
groupLeader.setNextLeader(departManager).setNextLeader(president);
|
||||
groupLeader.approval(new Application("事假单", 3));
|
||||
groupLeader.approval(new Application("婚假单", 10));
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package com.heibaiying.behavioral.command;
|
||||
|
||||
public interface Command {
|
||||
void execute();
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.heibaiying.behavioral.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Manager {
|
||||
|
||||
private List<Command> commandList = new ArrayList<>();
|
||||
|
||||
public void addCommand(Command command) {
|
||||
commandList.add(command);
|
||||
}
|
||||
|
||||
public void executeCommands() {
|
||||
for (Command command : commandList) {
|
||||
command.execute();
|
||||
}
|
||||
commandList.clear();
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.heibaiying.behavioral.command;
|
||||
|
||||
public class MuteCommand implements Command {
|
||||
|
||||
private Player player;
|
||||
|
||||
public MuteCommand(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
player.mute();
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.heibaiying.behavioral.command;
|
||||
|
||||
public class PauseCommand implements Command {
|
||||
|
||||
private Player player;
|
||||
|
||||
public PauseCommand(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
player.pause();
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.heibaiying.behavioral.command;
|
||||
|
||||
public class PlayCommand implements Command {
|
||||
|
||||
private Player player;
|
||||
|
||||
public PlayCommand(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
player.play();
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.heibaiying.behavioral.command;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class Player {
|
||||
|
||||
private String name;
|
||||
|
||||
public void play() {
|
||||
System.out.println(name + "播放");
|
||||
}
|
||||
|
||||
public void pause() {
|
||||
System.out.println(name + "暂停");
|
||||
}
|
||||
|
||||
public void mute() {
|
||||
System.out.println(name + "静音");
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.heibaiying.behavioral.command;
|
||||
|
||||
public class ZTest {
|
||||
public static void main(String[] args) {
|
||||
Manager manager = new Manager();
|
||||
Player player01 = new Player("播放器一");
|
||||
Player player02 = new Player("播放器二");
|
||||
manager.addCommand(new PlayCommand(player01));
|
||||
manager.addCommand(new PauseCommand(player01));
|
||||
manager.addCommand(new PlayCommand(player02));
|
||||
manager.addCommand(new MuteCommand(player02));
|
||||
manager.executeCommands();
|
||||
}
|
||||
}
|
@ -23,7 +23,7 @@ public class ZTest {
|
||||
|
||||
//获得值映射
|
||||
public static HashMap<String, Integer> getValue(String exprStr) throws IOException {
|
||||
HashMap<String, Integer> map = new HashMap<String, Integer>();
|
||||
HashMap<String, Integer> map = new HashMap<>();
|
||||
//解析有几个参数要传递
|
||||
for (char ch : exprStr.toCharArray()) {
|
||||
if (ch != '+' && ch != '-') {
|
||||
|
@ -0,0 +1,29 @@
|
||||
package com.heibaiying.behavioral.mediator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class HouseMediator extends Mediator {
|
||||
|
||||
private List<Person> personList = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void register(Person person) {
|
||||
if (!personList.contains(person)) {
|
||||
personList.add(person);
|
||||
person.setMediator(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(String from, String message) {
|
||||
System.out.println(from + "发送消息:" + message);
|
||||
for (Person person : personList) {
|
||||
String name = person.getName();
|
||||
if (!name.equals(from)) {
|
||||
person.receive(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,8 @@
|
||||
package com.heibaiying.behavioral.mediator;
|
||||
|
||||
abstract class Mediator {
|
||||
|
||||
public abstract void register(Person person);
|
||||
|
||||
public abstract void send(String from, String message);
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.heibaiying.behavioral.mediator;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Person {
|
||||
|
||||
private String name;
|
||||
private Mediator mediator;
|
||||
|
||||
public Person(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void send(String message) {
|
||||
mediator.send(this.name, message);
|
||||
}
|
||||
|
||||
public void receive(String message) {
|
||||
System.out.println(name + "收到消息:" + message);
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.heibaiying.behavioral.mediator;
|
||||
|
||||
public class ZTest {
|
||||
public static void main(String[] args) {
|
||||
HouseMediator houseMediator = new HouseMediator();
|
||||
Person seller = new Person("卖方");
|
||||
Person buyer = new Person("买方");
|
||||
houseMediator.register(seller);
|
||||
houseMediator.register(buyer);
|
||||
buyer.send("价格多少");
|
||||
seller.send("10万");
|
||||
buyer.send("太贵了");
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.heibaiying.behavioral.memento;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class Article {
|
||||
private String title;
|
||||
private String content;
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.heibaiying.behavioral.memento;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GitRepository {
|
||||
|
||||
private List<Memorandum> repository = new ArrayList<>();
|
||||
|
||||
public void save(Article article) {
|
||||
Memorandum memorandum = new Memorandum(article);
|
||||
repository.add(memorandum);
|
||||
}
|
||||
|
||||
public Article get(int version) {
|
||||
Memorandum memorandum = repository.get(version);
|
||||
return memorandum.toArticle();
|
||||
}
|
||||
|
||||
public Article back() {
|
||||
return repository.get(repository.size() - 1).toArticle();
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.heibaiying.behavioral.memento;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class Memorandum {
|
||||
|
||||
private String title;
|
||||
private String content;
|
||||
private Date createTime;
|
||||
|
||||
public Memorandum(Article article) {
|
||||
this.title = article.getTitle();
|
||||
this.content = article.getContent();
|
||||
this.createTime = new Date();
|
||||
}
|
||||
|
||||
public Article toArticle() {
|
||||
return new Article(this.title, this.content);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package com.heibaiying.behavioral.memento;
|
||||
|
||||
public class ZTest {
|
||||
public static void main(String[] args) {
|
||||
GitRepository repository = new GitRepository();
|
||||
Article article = new Article("Java手册", "版本一");
|
||||
repository.save(article);
|
||||
article.setContent("版本二");
|
||||
repository.save(article);
|
||||
article.setContent("版本三");
|
||||
repository.save(article);
|
||||
System.out.println(repository.back());
|
||||
System.out.println(repository.get(0));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user