23 가지 디자인 모델 - 방문 자 모델 (CEO, CTO)
/**
*
*/
public abstract class Staff {
public String name;
public int kpi;
public Staff(String name){
this.name=name;
kpi=new Random().nextInt(10);
}
//
public abstract void accept(Visitor visitor);
}
/**
*
*/
public class Engineer extends Staff {
public Engineer(String name) {
super(name);
}
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
//
public int getCodeLines(){
return new Random().nextInt(10*10000);
}
}
/**
*
*/
public class Manager extends Staff {
public Manager(String name) {
super(name);
}
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
//
public int getProducts(){
return new Random().nextInt(10);
}
}
public interface Visitor {
//
public void visit(Engineer engineer);
//
public void visit(Manager manager);
}
//
public class BusinessReport {
List mStaffs = new LinkedList<>();
public BusinessReport() {
mStaffs.add(new Manager(" "));
mStaffs.add(new Engineer(" -Shawn.Xiong"));
mStaffs.add(new Engineer(" -Kael"));
mStaffs.add(new Engineer(" -Chaossss"));
mStaffs.add(new Engineer(" -Tiiime"));
}
public void showReport(Visitor visitor) {
for (Staff staff : mStaffs) {
staff.accept(visitor);
}
}
}
/**
* CEO
*/
public class CEOVisitor implements Visitor {
@Override
public void visit(Engineer engineer) {
Log.e(" :" + engineer.name + ",KPI:" + engineer.kpi);
}
@Override
public void visit(Manager manager) {
Log.e(" :" + manager.name + ",KPI:" + manager.kpi + ", :" + manager.getProducts());
}
}
public class CTOVisitor implements Visitor {
@Override
public void visit(Engineer engineer) {
Log.e(" :"+engineer.name+", :"+engineer.getCodeLines());
}
@Override
public void visit(Manager manager) {
Log.e(" :"+manager.name+", :"+manager.getProducts());
}
}
public class Client {
public static void main(String[] args) {
//
BusinessReport report = new BusinessReport();
Log.e("======== CEO ========");
report.showReport(new CEOVisitor());
Log.e("======== CTO ========");
report.showReport(new CTOVisitor());
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.