用idea设计一个系统,要使用三种设计模式和一种体系结构的代码
时间: 2024-03-01 13:51:27 浏览: 18
好的,以下是使用三种设计模式和一种体系结构的代码示例:
设计模式:
1. 工厂模式(Factory Pattern)
```java
public interface Product {
void use();
}
public class ProductA implements Product {
@Override
public void use() {
System.out.println("使用产品A");
}
}
public class ProductB implements Product {
@Override
public void use() {
System.out.println("使用产品B");
}
}
public class Factory {
public static Product createProduct(String type) {
if (type.equals("A")) {
return new ProductA();
} else if (type.equals("B")) {
return new ProductB();
} else {
return null;
}
}
}
public class Test {
public static void main(String[] args) {
Product product = Factory.createProduct("A");
product.use();
}
}
```
2. 观察者模式(Observer Pattern)
```java
public interface Observer {
void update();
}
public class ConcreteObserverA implements Observer {
@Override
public void update() {
System.out.println("观察者A收到通知");
}
}
public class ConcreteObserverB implements Observer {
@Override
public void update() {
System.out.println("观察者B收到通知");
}
}
public interface Subject {
void addObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers();
}
public class ConcreteSubject implements Subject {
private List<Observer> observers = new ArrayList<>();
@Override
public void addObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.update();
}
}
}
public class Test {
public static void main(String[] args) {
Observer observerA = new ConcreteObserverA();
Observer observerB = new ConcreteObserverB();
Subject subject = new ConcreteSubject();
subject.addObserver(observerA);
subject.addObserver(observerB);
subject.notifyObservers();
}
}
```
3. 命令模式(Command Pattern)
```java
public interface Command {
void execute();
}
public class ConcreteCommandA implements Command {
private Receiver receiver;
public ConcreteCommandA(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
receiver.actionA();
}
}
public class ConcreteCommandB implements Command {
private Receiver receiver;
public ConcreteCommandB(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
receiver.actionB();
}
}
public class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void executeCommand() {
command.execute();
}
}
public class Receiver {
public void actionA() {
System.out.println("执行操作A");
}
public void actionB() {
System.out.println("执行操作B");
}
}
public class Test {
public static void main(String[] args) {
Receiver receiver = new Receiver();
Command commandA = new ConcreteCommandA(receiver);
Command commandB = new ConcreteCommandB(receiver);
Invoker invoker = new Invoker();
invoker.setCommand(commandA);
invoker.executeCommand();
invoker.setCommand(commandB);
invoker.executeCommand();
}
}
```
体系结构:
使用MVC(Model-View-Controller)体系结构:
```java
// Model
public class UserModel {
private String name;
private int age;
public UserModel(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
// View
public class UserView {
public void printUserDetails(String name, int age) {
System.out.println("User:");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
// Controller
public class UserController {
private UserModel model;
private UserView view;
public UserController(UserModel model, UserView view) {
this.model = model;
this.view = view;
}
public void setUserName(String name) {
model.name = name;
}
public void setUserAge(int age) {
model.age = age;
}
public String getUserName() {
return model.getName();
}
public int getUserAge() {
return model.getAge();
}
public void updateUserView() {
view.printUserDetails(model.getName(), model.getAge());
}
}
// Test
public class Test {
public static void main(String[] args) {
UserModel model = new UserModel("Tom", 20);
UserView view = new UserView();
UserController controller = new UserController(model, view);
controller.updateUserView();
controller.setUserName("Jerry");
controller.setUserAge(30);
controller.updateUserView();
}
}
```
这个代码示例使用了工厂模式、观察者模式、命令模式和MVC体系结构。这些设计模式和体系结构可以使系统具有更好的可维护性、可扩展性和灵活性。