设计原则
* 单一职责原则(SRP),就一个类而言,应当仅有一个引起它变化的原因。
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削减或则抑制这个类完成其他职责的能力。
这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏。
* 开放-封闭原则,是说软件实体(类,模块,函数等等)应该可以扩展,但是不可以修改。
对于扩展是开放的,对于更改是封闭的。即面对需求,对程序的改动是增加新代码,或则说是一个类,而不是更改现有的代码。
它是面向对象设计的核心所在。
* 依赖倒转原则
A. 高层模块不应该依赖低层模块。俩个都应该依赖抽象。
B. 抽象不应该依赖细节,细节应该依赖抽象。
说的明白些就是要采对接口编程,而不是对实现编程。
* 里氏代换原则(LSP),子类型必须能够替换掉它的父类型。
正是由于子类型的可替换性才似的使用父类类型的模块在无需修改的情况下就可以扩展。
* 迪米特法则(LoD),也叫最少知识原则。
如果来个类不必彼此直接通信,那么这俩个类就不应当发生直接的互相作用。
如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
该思想强调了类之间的松耦合。
* 合成/聚合复用原则(CARP),尽量使用合成/聚合,尽量不要使用类继承。
聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;
合成则是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。
* 敏捷开发原则
敏捷开发原则告诉我们,不要为代码添加基于猜测的,实际不需要的功能
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
设计模式(java代码) (291个子文件)
Composite.class 2KB
DynamicProxyDemo.class 2KB
Leaf.class 1KB
ConcreteVisitor1.class 1KB
ConcreteVisitor2.class 1KB
ConcreteBuilder1.class 1KB
ConcreteBuilder2.class 1KB
ObjectStructure.class 1KB
Facade.class 1KB
Subject.class 1KB
DynamicProxyHandler.class 1KB
Originator.class 1KB
Product.class 1KB
ConcreteObserver.class 1KB
ConcreteMediator.class 1KB
Client.class 1KB
ConcreteFactoryA.class 1023B
ConcreteFactoryB.class 1023B
Client.class 1000B
Client.class 1000B
ConcreteColleague2.class 990B
ConcreteColleague1.class 990B
ConcreteDecoratorA.class 959B
Client.class 951B
ConcreteClassA.class 939B
ConcreteClassB.class 939B
Client.class 886B
Client.class 856B
Client.class 849B
FlyweightFactory.class 840B
Client.class 838B
Client.class 821B
Client.class 791B
Client.class 786B
Client.class 778B
Client.class 753B
Decorator.class 752B
ConcreteElementB.class 737B
ConcreteElementA.class 737B
Client.class 723B
ConcreteHandler2.class 719B
ConcreteHandler1.class 719B
ConcreteHandler3.class 719B
Context.class 711B
RealSubject.class 710B
ConcreteDecoratorB.class 699B
Client.class 698B
ConcretePrototype1.class 695B
NonterminalExpression.class 674B
Prototype.class 673B
TerminalExpression.class 665B
ConcreteFactoryB.class 663B
ConcreteFactoryA.class 663B
Context.class 655B
UnsharedConcreteFlyweight.class 637B
Client.class 637B
SubSystemThree.class 632B
SubSystemFour.class 627B
ConcreteCommand.class 625B
SubSystemTwo.class 622B
SubSystemOne.class 622B
ConcreteFlyweight.class 613B
ConcreteStateA.class 606B
ConcreteStateB.class 606B
Singleton1.class 594B
ConcreteProductA.class 587B
ConcreteProductB.class 587B
Client.class 587B
ProductA1.class 582B
ProductB2.class 582B
ProductA2.class 582B
ProductB1.class 582B
ConcreteStrategyC.class 580B
ConcreteStrategyB.class 580B
ConcreteStrategyA.class 580B
ConcreteImplementorA.class 577B
ConcreteImplementorB.class 577B
ConcreteComponent.class 575B
Adapter.class 572B
Proxy.class 567B
ConcreteSubject.class 562B
Abstraction.class 560B
Client.class 555B
Invoker.class 548B
RealSubject.class 541B
Caretaker.class 524B
Director.class 511B
Client.class 504B
Context.class 504B
Client.class 501B
Adaptee.class 498B
Receiver.class 492B
Target.class 490B
Handler.class 479B
Singleton2.class 476B
Client.class 469B
AbstractClass.class 464B
RefinedAbstraction.class 456B
Memento.class 451B
Component.class 448B
共 291 条
- 1
- 2
- 3
资源评论
- solx_002012-03-1623种设计模式的代码都有,对理解设计模式挺实用!
wekui
- 粉丝: 56
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于SpringBoot+Vue3快速开发平台、自研工作流引擎源码设计.zip
- docker安装部署全流程
- 基于树莓派的人脸识别系统python源码+项目部署说明+超详细代码注释.zip
- Python和R爬取分析赶集网北京二手房数据.zip
- Python和R爬取分析赶集网北京二手房数据.zip
- Java知识体系最强总结(2021版).txt
- Python知识点Python知识点Python知识点Python知识点Python知识点PythonPython知识点.txt
- Java开发基于seetaface6的人脸识别(活体检测)的封装源码.zip
- JSP在线失物招领管理平台源码.zip
- JSP在线旅游美食展现管理系统源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功