用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体系结构。这些设计模式和体系结构可以使系统具有更好的可维护性、可扩展性和灵活性。

相关推荐

最新推荐

recommend-type

使用指定的JDK启动IDEA的三种方法

今天小编就为大家分享一篇关于使用指定的JDK启动IDEA的三种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

IDEA中使用Git拉取代码时报 Git pull failed原因及解决方法

主要介绍了IDEA中使用Git拉取代码时报 Git pull failed原因及解决方法,本文给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

使用idea搭建一个spring mvc项目的图文教程

主要介绍了使用idea直接创建一个spring mvc项目的图文教程,本文通过图文并茂的方式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

一种新的模式匹配(模糊搜索)算法

这是我本人写的一篇论文,无奈因为本人缺乏深厚的文字功底和理论能力,论文中出现大篇幅源代码,且不会借鉴他人的文献,被本校的学报退稿了,现在想要拿出来与大家分享。本论文所研究的模式匹配算法是一种不同于传统...
recommend-type

详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)

主要介绍了在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。