> 文章列表 > 哈工大软件构造-设计模式笔记

哈工大软件构造-设计模式笔记

哈工大软件构造-设计模式笔记

文章目录

    • UML简单知识
    • 1.单例模式
    • 2.工厂方法模式
    • 3.迭代器模式
    • 4.策略模式
    • 5.建造者模式
    • 6.模板方法模式
    • 7.代理模式
    • 8.责任链模式
    • 9.抽象工厂模式
    • 10.适配器模式
    • 11.观察者模式
    • 12.外观模式

参考了
https://blog.csdn.net/u010837612/category_10400718.html
https://www.runoob.com/design-pattern/design-pattern-tutorial.html
https://zhuanlan.zhihu.com/p/109655171

UML简单知识

参考https://zhuanlan.zhihu.com/p/109655171

“+”表示 public;
“-”表示 private;
“#”表示 protected;
不带符号表示 default。 friendly

哈工大软件构造-设计模式笔记
哈工大软件构造-设计模式笔记

实现关系
哈工大软件构造-设计模式笔记

1.单例模式

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

主要解决:一个全局使用的类频繁地创建与销毁。

何时使用:当您想控制实例数目,节省系统资源的时候。

如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。

哈工大软件构造-设计模式笔记

哈工大软件构造-设计模式笔记

2.工厂方法模式

哈工大软件构造-设计模式笔记
哈工大软件构造-设计模式笔记

3.迭代器模式

迭代器模式(Iterator Pattern)
意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。

主要解决:不同的方式来遍历整个整合对象。

何时使用:遍历一个聚合对象。

如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。

4.策略模式

策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式

interface Strategy
class ConcreteStrategy implments Strategyclass Cart
{public void opration(int num,Strategy starategy){strategy.operation(num);}
}
class CLient
{cart..opration(num,new ConcreStratgy());
}

有多种不同的算法来实现同一个任务,但需要client根据需要
动态切换算法,而不是写死在代码里

public interface Strategy {public int doOperation(int num1, int num2);
}
public class OperationSubtract implements Strategy{@Overridepublic int doOperation(int num1, int num2) {return num1 - num2;}
}
public class OperationAdd implements Strategy{@Overridepublic int doOperation(int num1, int num2) {return num1 + num2;}
}
class Context {private AbstractStrategy strategy; //维持一个对抽象策略类的引用public void setStrategy(AbstractStrategy strategy) {this.strategy= strategy;}//调用策略类中的算法public void algorithm() {strategy.algorithm();}
}
abstract class Strategy {public abstract void algorithm(); //声明抽象算法
}
class ConcreteStrategyA extends AbstractStrategy {//算法的具体实现public void algorithm() {//算法A}
}Context context = new Context();
AbstractStrategy strategy;
strategy = new ConcreteStrategyA(); //可在运行时指定类型
context.setStrategy(strategy);
context.algorithm();
通过context选定执行哪种策略算法然后context执行

5.建造者模式

6.模板方法模式

7.代理模式

哈工大软件构造-设计模式笔记
哈工大软件构造-设计模式笔记

8.责任链模式

就是拦截器的链

9.抽象工厂模式

工厂的工厂

10.适配器模式

哈工大软件构造-设计模式笔记

11.观察者模式

比如说nacos

12.外观模式

就是提供一个类似于 main的启动器
哈工大软件构造-设计模式笔记