14. COMMAND(명령 모드)
의 목적
하나의 요청을 하나의 대상으로 봉하여 서로 다른 요청을 사용하여 고객을 매개 변수화할 수 있도록 한다.요청에 대해 로그를 정렬하거나 기록하고 취소 가능한 작업을 지원합니다.
장점
4
4
4
4
사용 예
고등학교 때 샤오진은 여름방학 때 심심해서 호텔에 가서 아르바이트를 했다.이 상황에서 그는 명령 모드를 사용해서 주문했다.식당 안에는 모두 두 명의 요리사가 있는데 이것은 분류도에 속하는 Concrete Receiver로 각각 중식 요리사와 양식 요리사이다.모두 두 가지 요리가 있는데 그것이 바로 붉은 소고기와 샐러드인데 이것은 분류도의 Concrete Command에 해당한다.
명령은 요리사가 요리를 할 수 있도록 쿠킹 () 함수를 호출합니다.세부 코드는 다음과 같습니다.
package command;
/**
* ,
*/
public interface Chief {
void cooking(String name);
}
package command;
/**
*
*/
public class ChineseChief implements Chief {
@Override
public void cooking(String name){
System.out.println(" " + name);
}
}
package command;
/**
*
*/
public class WesternChief implements Chief {
public void cooking(String name){
System.out.println(" "+ name);
}
}
package command;
/**
*
*/
public interface Food {
void cooking();
}
package command;
/**
* ,
*/
public class BraisedPork implements Food{
private Chief chief;
public BraisedPork(Chief chief){
this.chief = chief;
}
public void cooking(){
chief.cooking(" ");
}
}
package command;
public class Salad implements Food {
private Chief chief;
public Salad(Chief chief){
this.chief = chief;
}
public void cooking(){
chief.cooking(" ");
}
}
package command;
/**
*
*/
public class Server {
String name;
Food food1,food2,food3;
private Server(Builder builder){
this.name = builder.name;
this.food1 = builder.food1;
this.food2 = builder.food2;
this.food3 = builder.food3;
}
/**
* ,
*/
public void deliver(){
if (food1 != null){
food1.cooking();
}
if(food2 != null){
food2.cooking();
}
if(food3 != null){
food3.cooking();
}
}
public static class Builder{
String name;
private Food food1;
private Food food2;
private Food food3;
public Builder(String name){
this.name = name;
}
public Builder food1(Food food){
this.food1 = food;
return this;
}
public Builder food2(Food food){
this.food2 = food;
return this;
}
public Builder food3(Food food){
this.food3 = food;
return this;
}
public Server builder(){
return new Server(this);
}
}
}
package command;
public class Client {
public static void main(String[] args) {
Chief chineseChief = new ChineseChief();
Chief westernChief = new WesternChief();
Food braisePork = new BraisedPork(chineseChief);
Food salad = new Salad(westernChief);
Server server = new Server.Builder(" ").food1(braisePork).food2(salad).builder();
server.deliver();
}
}
출력 결과는 다음과 같습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.