历年软件设计师软考中级全部考试资料,获取方式见:
2016下半年
class Invoice { // 发票类
public void printInvoice() {
System.out.println("This is the content of the invoice!");
}
}
class Decorator extends Invoice {
protected Invoice ticket;
public Decorator(Invoice t) {// 构造方法
this.ticket = t;
}
@Override
public void printInvoice() {
if (ticket != null) {
ticket.printInvoice(); // 填空1
}
}
}
class HeadDecorator extends Decorator {
public HeadDecorator(Invoice t) {
super(t);
}
@Override
public void printInvoice() {
System.out.println("This is the header of the invoice! ");
ticket.printInvoice(); // 填空2
}
}
class FootDecorator extends Decorator {
public FootDecorator(Invoice t) {
super(t);
}
@Override
public void printInvoice() {
ticket.printInvoice(); // 填空3
System.out.println("This is the foot of the invoice! ");
}
}
public class InvoiceTest {
public static void main(String[] args) {
Invoice t = new Invoice();// 定义一个发票
Invoice ticket;
ticket = new FootDecorator(new HeadDecorator(t)); // 填空4
ticket.printInvoice();
System.out.println("---------------------");
ticket = new FootDecorator(new HeadDecorator(new Decorator(null))); // 填空5
ticket.printInvoice();
}
}
// 输出结果:
// This is the header of the invoice!
// This is the content of the invoice!
// This is the foot of the invoice!
//---------------------
// This is the header of the invoice!
// This is the foot of the invoice!
2017下半年
class Matrix {
} // 各种格式的文件最终都被转化为像素矩阵 // 此处代码省略
abstract class Implementor {
public abstract void doPaint(Matrix m); // 1
// 显示像素矩阵 m
}
class Winlmp extends Implementor {
public void doPaint(Matrix m) {
// 调用 Windows 系统的绘制函数绘制像素矩阵
}
}
class Linuxlmp extends Implementor {
public void doPaint(Matrix m) {
// 用 Linux 系统的绘制函数绘制像素矩
}
}
abstract class Image {
public void setlmp(Implementor imp) {
this.imp = imp;
}
public abstract void parseFile(String fileName);
protected Implementor imp;
}
// class BMPImage extends Image {
// // 此处代码省略
// }
class GIFlmage extends Image {
public void parseFile(String fileName) {
// 此处解析 BMP 文件并获得一个像素矩阵对象 m;
// 显示像素矩阵 m
// imp.doPaint(m);
}
}
// class JPEGlmage extends Image {
// // 此处代码省略
// }
class Main {
public static void main(String[] args) {
// 在 Linux 操作系统上查看 demo.gif 图像文件lmage
Image image = new GIFlmage();
Implementor imagelmp = new Linuxlmp();
image.setlmp(imagelmp);
image.parseFile("demo.gif");
}
}
2019下半年
import java.util.*;
interface Observer {
public void update(); // 1
}
interface Subject {
public void Attach(Observer obs);
public void Detach(Observer obs);
public void Notify();
public void setStatus(int staus);
public int getStatus();
}
class OfficeDoc implements Subject {
private List<Observer> myObs; // 2
private String mySubjectName;
private int m_status;
public OfficeDoc(String name) {
mySubjectName = name;
this.myObs = new ArrayList<Observer>();
m_status = 0;
}
public void Attach(Observer obs) {
this.myObs.add(obs);
}
public void Detach(Observer obs) {
this.myObs.remove(obs);
}
public void Notify() {
for (Observer obs : this.myObs) {
obs.update(); // 3
}
}
public void setStatus(int status) {
m_status = status;
System.out.println("SetStatus Subject[" + mySubjectName + "]status:" + status);
}
public int getStatus() {
return m_status;
}
}
class DocExplorer implements Observer {
private String myObsName;
public DocExplorer(String name, Subject sub) { // 4
myObsName = name;
sub.Attach(this); // 5
}
public void update() {
System.out.println("update observer[" + myObsName + "]");
}
}
class ObserverTest {
public static void main(String[] args) {
Subject subjectA = new OfficeDoc("subjectA");
Observer observerA = new DocExplorer("observerA", subjectA);
subjectA.setStatus(1);
subjectA.Notify();
}
}
2020下半年
interface WebServiceMediator {
public void buy(double money, WebService service); // 1
public void setAmazon(WebService amazon);
public void setEbay(WebService ebay);
}
abstract class WebService {
protected WebServiceMediator mediator; //(2)
public abstract void setMediator(WebServiceMediator mediator);
public abstract void buyService(double money);//(3)
public abstract void search(double money);
}
class ConcreteServiceMediator implements WebServiceMediator {
private WebService amazon;
private WebService ebay;
public ConcreteServiceMediator() {
amazon = null;
ebay = null;
}
public void setAmazon(WebService amazon) {
this.amazon = amazon;
}
public void setEbay(WebService ebay) {
this.ebay = ebay;
}
public void buy(double money, WebService service) {
if (service == amazon) {
amazon.search(money);
} else {
ebay.search(money);
}
}
}
class Amazon extends WebService {
public void setMediator(WebServiceMediator mediator) {
this.mediator = mediator;
}
public void buyService(double money) {
mediator.buy(money, this); // 4
}
public void search(double money) {
System.out.println(money);
}
}
class Ebay extends WebService {
public void setMediator(WebServiceMediator mediator) {
this.mediator = mediator;
}
public void buyService(double money) {
mediator.buy(money, this); // 5
}
public void search(double money) {
System.out.println(money);
}
}
2021上半年
import java.util.*;
/*组合模式*/
abstract class MenuComponent { // 构成层叠菜单的元素
public String name; // 菜单项或子菜单名称 1
public void printName() {
System.out.println(name);
}
public abstract boolean addMenuElement(MenuComponent element); // 2
public abstract boolean removeMenuElement(MenuComponent element);
public abstract List<MenuComponent> getElement(); // 3
}
class MenuItem extends MenuComponent {
public MenuItem(String name) {
this.name = name;
}
public boolean addMenuElement(MenuComponent element) {
return false;
}
public boolean removeMenuElement(MenuComponent element) {
return false;
}
public List<MenuComponent> getElement() {
return null;
}
}
class Menu extends MenuComponent {
private ArrayList<MenuComponent> elementList;
public Menu(String name) {
this.name = name;
this.elementList = new ArrayList<MenuComponent>();
}
public boolean addMenuElement(MenuComponent element) {
return elementList.add(element);
}
public boolean removeMenuElement(MenuComponent element) {
return elementList.remove(element);
}
public List<MenuComponent> getElement() {
return elementList;
}
}
class CompositeTest {
public static void main(String[] args) {
MenuComponent mainMenu = new Menu("Insert");
MenuComponent subMenu = new Menu("Chart");
MenuComponent element = new MenuItem("On This Sheet");
mainMenu.addMenuElement(subMenu); // 5
subMenu.addMenuElement(element);
printMenus(mainMenu);
}
private static void printMenus(MenuComponent ifile) {
ifile.printName();
List<MenuComponent> children = ifile.getElement();
if (children == null) return;
for (MenuComponent element : children) {
printMenus(element);
}
}
}
2021下半年
import java.util.*;
enum PieceColor {BLACK, WHITE}// 棋子颜色
class PiecePos {// 棋子位置
private int x;
private int y;
public PiecePos(int a, int b) {
x = a;
y = b;
}
public int getX0() {
return x;
}
public int getYO() {
return y;
}
}
abstract class Piece {// 棋子定义
protected PieceColor m_color;// 颜色
protected PiecePos m_pos;// 位置
public Piece(PieceColor color, PiecePos pos) {
m_color = color;
m_pos = pos;
}
// 抽象方法
public abstract void draw();
}
class BlackPiece extends Piece {
public BlackPiece(PieceColor color, PiecePos pos) {
super(color, pos);
}
public void draw() {
System.out.println("draw a black piece");
}
}
class WhitePiece extends Piece {
public WhitePiece(PieceColor color, PiecePos pos) {
super(color, pos);
}
public void draw() {
System.out.println("draw a white piece");
}
}
class PieceBoard {
// 棋盘上已有的棋子
private static final ArrayList<Piece> m_arrayPiece = new ArrayList();
private String m_blackName;// 黑方名称
private String m_whiteName;// 白方名称
public PieceBoard(String black, String white) {
m_blackName = black;
m_whiteName = white;
}
// 一步棋,在棋盘上放一颗棋子
public void SetePiece(PieceColor color, PiecePos pos) {
Piece piece = null;
if (color == PieceColor.BLACK) {// 放黑子
piece = new BlackPiece(color, pos);// 获取一颗黑子
System.out.println(m_blackName + "在位置(" + pos.getX0() + "," + pos.getYO() + ")");
} else {// 放白子
piece = new WhitePiece(color, pos);// 获取一颗白子
System.out.println(m_whiteName + "在位置(" + pos.getX0() + "," + pos.getYO() + ")");
}
m_arrayPiece.add(piece);
}
public static void main(String[] args) {
PieceBoard pieceBoard = new PieceBoard("BLACK", "WHITE");
pieceBoard.SetePiece(PieceColor.valueOf("BLACK"), new PiecePos(1, 2));
}
}
2022上半年
import java.util.*;
class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
class Originator {
private String state;
public void setState(String state) {
this.state = state;
}
public String getState() {
return state;
}
public Memento saveStateToMemento() {
return new Memento(state); //1
}
public void getStateFromMemento(Memento memento) {
state = memento.getState(); //2
}
}
class CareTaker {
private List<Memento> mementoList = new ArrayList<>();
public void add(Memento state) { //3
mementoList.add(state);
}
public Memento get(int index) { //4
return mementoList.get(index);
}
}
class MementoPatternDemo {
public static void main(String[] args) {
Originator originator = new Originator();
CareTaker careTaker = new CareTaker();
originator.setState("State #1");
originator.setState("State #2");
careTaker.add(originator.saveStateToMemento()); // 5
originator.setState("State #3");
careTaker.add(originator.saveStateToMemento()); // 6
originator.setState("State #4");
System.out.println("cur state " + originator.getState());
originator.getStateFromMemento(careTaker.get(0));
System.out.println("fir saved state " + originator.getState());
originator.getStateFromMemento(careTaker.get(1));
System.out.println("sec saved state " + originator.getState());
}
}
2022下半年
interface Patient {
String getName(); // 1
}
interface Disposer {
void dispose(Patient patient); // 2
}
class Registry implements Disposer { // 挂号
public void dispose(Patient patient) {
System.out.println("I am registering..." + patient.getName());
}
}
class Doctor implements Disposer { // 医生门诊
public void dispose(Patient patient) {
System.out.println("I am diagnosing..." + patient.getName());
}
}
class Pharmacy implements Disposer { // 取药
public void dispose(Patient patient) {
System.out.println("I am giving medicine..." + patient.getName());
}
}
class Facade {
private Patient patient;
public Facade(Patient patient) {
this.patient = patient;
}
public void dispose() {
Registry registry = new Registry();
Doctor doctor = new Doctor();
Pharmacy ph = new Pharmacy();
registry.dispose(patient);
doctor.dispose(patient);
ph.dispose(patient);
}
}
class ConcretePatient implements Patient {
private String name;
public ConcretePatient(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class FacadeTest {
public static void main(String[] args) {
Patient patient = new ConcretePatient(""); // 3
Facade f = new Facade(patient); // 4 5
f.dispose(); // 6
}
}
2023上半年
enum TYPE {COMMA, DOTS, LINE}
interface PrintStrategy {
public void doPrint(Interval val); // 1
}
class Interval {
private double lowerBound;
private double upperBound;
public Interval(double pLower, double pUpper) {
lowerBound = pLower;
upperBound = pUpper;
}
public void printInterval(PrintStrategy ps) {
ps.doPrint(new Interval(lowerBound, upperBound)); // 2
}
public double getLower() {
return lowerBound;
}
public double getUpper() {
return upperBound;
}
}
class PrintIntervalLine implements PrintStrategy {
public void doPrint(Interval val) {
System.out.println("[" + val.getLower() + "-" + val.getUpper() + "]");
}
}
class PrintIntervalDots implements PrintStrategy {
public void doPrint(Interval val) {
System.out.println("[" + val.getLower() + ".." + val.getUpper() + "]");
}
}
class PrintIntervalComma implements PrintStrategy {
public void doPrint(Interval val) {
System.out.println("[" + val.getLower() + "," + val.getUpper() + "]");
}
}
class Client {
public static PrintStrategy getStrategy(TYPE type) {
PrintStrategy st = null;
switch (type) {
case COMMA:
st = new PrintIntervalComma(); // 3
break;
case DOTS:
st = new PrintIntervalDots(); // 4
break;
case LINE:
st = new PrintIntervalLine(); // 5
break;
}
return st;
}
public static void main(String[] args) {
Interval interval = new Interval(1.7, 2.1);
interval.printInterval(getStrategy(TYPE.COMMA));
interval.printInterval(getStrategy(TYPE.DOTS));
interval.printInterval(getStrategy(TYPE.LINE));
}
}
更多速成版资料点击👉👉【闲鱼】https://m.tb.cn/h.5yHks14?tk=3iMKWpNBanT MF3543 「我在闲鱼发布了【自己一次性高分通过软考中级!】」
点击链接直接打开
整理不易🚀🚀,关注和收藏后拿走📌📌欢迎留言🧐👋📣
欢迎专注我的公众号AdaCoding 和 Github:AdaCoding123