设计模式资料-自用学习的 设计模式是软件设计中的一种重要概念,它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。设计模式的产生背景可以追溯到1988年,勃兰特·梅耶(Bertrand Meyer)在他的著作《面向对象软件构造》(Object Oriented Software Construction)中提出了开闭原则(Open Closed Principle,OCP),这是设计模式的六大设计原则之一。 开闭原则的定义是:软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension, but closed for modification)。简单点说,就是一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。软件实体包括项目中划分出的模块、类与接口、方法等几个部分。 设计模式的概念可以追溯到1990年代,软件工程界开始研讨设计模式的话题。1995年,“四人组”(Gang of Four,GoF)合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书,在书籍中收录了23个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。 软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。 在软件设计模式中,有很多种不同的设计模式,每种设计模式都有其特定的应用场景和解决问题的方法。例如,工厂模式(Factory Pattern)可以用于解决对象创建问题,观察者模式(Observer Pattern)可以用于解决对象之间的通信问题。 在书店销售书籍的例子中,我们可以使用工厂模式来创建书籍对象,而不是直接使用new关键字来创建对象。这可以提高代码的可重用性和可读性。例如,我们可以定义一个IBook接口,用于描述书籍对象的基本属性和行为: ```java public interface IBook { public String getName(); public int getPrice(); public String getAuthor(); } ``` 然后,我们可以使用工厂模式来创建书籍对象: ```java public class NovelBook implements IBook { private String name; private int price; private String author; public NovelBook(String name, int price, String author) { this.name = name; this.price = price; this.author = author; } @Override public String getName() { return this.name; } @Override public int getPrice() { return this.price; } @Override public String getAuthor() { return this.author; } } ``` 在BookStore类中,我们可以使用工厂模式来创建书籍对象,并将其添加到ArrayList中: ```java public class BookStore { private final static ArrayList<IBook> bookList = new ArrayList<>(); static { bookList.add(new NovelBook("红楼梦", 9900, "曹雪芹 ")); bookList.add(new NovelBook("侠客行", 8900, "金庸 ")); bookList.add(new NovelBook("原则", 6900, "瑞·达利欧")); bookList.add(new NovelBook("海贼王1", 4900, "尾田荣一郎")); } public static void main(String[] args) { NumberFormat format = NumberFormat.getCurrencyInstance(); format.setMaximumFractionDigits(2); for (IBook book : bookList) { System.out.println("书名:" + book.getName() + ", 价格:" + format.format(book.getPrice()) + ", 作者:" + book.getAuthor()); } } } ``` 在这个例子中,我们使用了工厂模式来创建书籍对象,並将其添加到ArrayList中,然后在main方法中遍历ArrayList,输出书籍的基本属性和行为。 设计模式的六大设计原则包括: 1. 开闭原则(Open Closed Principle,OCP) 2. 里氏替换原则(Liskov Substitution Principle,LSP) 3. 依赖倒置原则(Dependency Inversion Principle,DIP) 4. 接口隔离原则(Interface Segregation Principle,ISP) 5. 迪米特法则(Law of Demeter,LoD) 6. 合成复用原则(Composite Reuse Principle,CRP) 这些设计原则可以指导我们在软件设计中如何编写高质量、易维护的代码,提高代码的可重用性、可读性和可靠性。





剩余88页未读,继续阅读


























- 粉丝: 111
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 本库是个基于python的工具集,用于记录数据到文件。 使用方便,代码简洁, 是一个可靠、省心且实用的工具。 支持多线程同时写入。.zip
- 本科毕业设计,基于python的图像复制粘贴篡改识别软件。.zip
- 本项目是基于计算机视觉的端到端交通路口智能监控系统.采用的设计架构由SRS
- 碧蓝航线ios平台自动脚本,基于python+opencv+facebook_wda实现.zip
- 毕业设计中基于给定微博数据的反作弊识别,用python开发。.zip
- 毕业设计项目,基于深度学习的实时语义分割算法研究,python实现。.zip
- 对基于python的微博爬虫进行重写,重写语言:java.zip
- 此框架是基于Python+Pytest+Requests+Allure+Yaml+Json实现全链路接口自动化测试
- 程序语言课程作业在线评测平台(实现Java、C、Python的选择、填空、代码题在线评测),基于SpringBoot+Layui+MySQL实现.zip
- 非官方的科大讯飞语音合成(用于朗读,配音场景)python API (基于官方demo增加了:超过2000字上限自动分割再合并音频的功能).zip
- 非官方的简易中国铁路列车运行图系统,基于Python + PyQt5
- 超市POS销售与后台管理系统_商品录入收银业务会员管理进货销售库存人员权限断网收银断电保护_实现超市前台POS销售商品扫描条形码输入收银计算找零打印清单会员折扣累计消费以及后台管理.zip
- 俄罗斯方块闯关版,基于Python实现.zip
- 该项目是基于Python和数据库实现的学生信息管理系统.zip
- 该仓库为agv系统调度软件的前后端实现。项目基于fastapi(python后端框架)和vue2实现了RESTful风格的前后端分离.zip
- 该项目是基于Scrapy框架的Python新闻爬虫,能够爬取网易,搜狐,凤凰和澎湃网站上的新闻,将标题,内容,评论,时间等内容整理并保存到本地.zip



评论0