以下内容转载自
https://blog.csdn.net/zhengzhb/article/details/7187278
在此权作为笔记
前言
在面向对象设计模式中,类与类之间的关系主要分六种,它们分别是:
依赖、关联、聚合、组合、继承、实现。耦合度依次增强。
1. 依赖
依赖,虚线箭头
B类作为A类中的方法参数、局部变量或者静态方法调用。可以说A依赖于B。
public class A{
public void fun(B b){
}
}
2. 关联
关联,实现箭头
分为
- 单向关联:B类作为A类中的成员变量存在。
public class A{
public B b;
}
- 双向关联:B类作为A类中的成员变量存在,A类作为B类中的成员变量存在。
public class A{
public B b = new B();
}
public class B{
private A a = new A();
}
3. 聚合
聚合,空心菱形
拥有,如人有车、房
set()
方法赋值
public class Person{
Car car;
public void setCar(Car car) {
this.car = car;
}
}
4. 组合
组合,实心菱形
如人由身体和灵魂组成
构造方法赋值
public class Person{
public Body body;
public Person(Body body) {
this.body = body;
}
}
5. 继承
空心三角实线
6. 实现
空心三角虚线
设计模式概念
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
设计模式共有23种,分成三大类
- 创建型:这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
1.简单工厂模式(Factory)
2.抽象工厂模式(Abstract Factory)
3.单例模式(Singleton)
4.建造者模式(Builder)
5.原型模式(Protytype) - 结构型:这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
1.适配器模式(Adapter)
2.桥接模式(Bridge )
3.组合模式(Composite )
4.装饰器模式(Decorator )
5.外观模式(Facade )
6.享元模式(Flyweight )
7.代理模式(Proxy ) - 行为型:这些设计模式特别关注对象之间的通信。
1.责任链模式(Chain of Responsibility)
2.命令模式(Command )
3.解释器模式(Interpreter )
4.迭代器模式(Iterator )
5.中介者模式(Mediator )
6.备忘录模式(Memento )
7.观察者模式(Observer )
8.状态模式(State )
9.策略模式(Strategy )
10.模板模式(Template )
11.访问者模式(Visitor )