? ? ? ? 我对设计模式的理解就是一种可复用的且面向对象的设计工具,它与代码无关,我们可以利用设计模式设计出高内聚、低耦合的应用程序,并且最大程度实现程序的复用,以应对复杂的需求变化。
? ? ? ? 程序的可复用性就是用已存在的程序模块进行更新;
? ? ? ? 高内聚就是我有一组相互关联,紧密依赖的一些方法,我们需要将这些方法封装在一个类中
? ? ? ? 低耦合就是减少两个类或者多个类之间的相互依赖;
? ? ? ? 为了设计出高内聚、低耦合的应用程序,总结了七个原则:
? ? ? ? 1.单一职责原则;
? ? ? ? 2.依赖倒置原则;
? ? ? ? 3.开闭原则;
? ? ? ? 4.接口隔离原则;
? ? ? ? 5.里氏替换原则;
? ? ? ? 6.合成复用原则;
? ? ? ? 7.迪米特原则;
? ? ? ? 设计模式大致分为三种类型:
? ? ? ? 1.创建型设计模式;
? ? ? ? ? ? ? ? 用于对象的创建,有五种类型:
? ? ? ? ? ? ? ? ①单例(Singleton)模式;
? ? ? ? ? ? ? ? ②工厂方法(FactoryMethod)模式;
? ? ? ? ? ? ? ? ③抽象工厂(AbstractFactory)模式;
? ? ? ? ? ? ? ? ④建造者(Builder)模式;
? ? ? ? ? ? ? ? ⑤原型(Prototype)模式;
? ? ? ? 2.结构型设计模式;
? ? ? ? ? ? ? ? 用于对象和对象的组合/类与类的组合,组合后的对象或者类更利于扩展,有七种类型:
? ? ? ? ? ? ? ? ①组合(Composite)模式;
? ? ? ? ? ? ? ? ②适配器(Adapter)模式;
? ? ? ? ? ? ? ? ③包装器(Wrapper)/? 装饰器(Decorator)模式;
? ? ? ? ? ? ? ? ④桥接(Bridge)模式;
? ? ? ? ? ? ? ? ⑤外观(Facade)模式;
? ? ? ? ? ? ? ? ⑥享元(Flyweight)模式;
? ? ? ? ? ? ? ? ⑦代理(Proxy)模式;
? ? ? ? 3.行为型设计模式;
? ? ? ? ? ? ? ? 用于解决对类和对象之间的交互与方法分配问题,有十一种类型:
? ? ? ? ? ? ? ? ①状态(State)模式;
? ? ? ? ? ? ? ? ②策略(Strategy)模式;
? ? ? ? ? ? ? ? ③命令(Command)模式;
? ? ? ? ? ? ? ? ④访问者(Visitor)模式;
? ? ? ? ? ? ? ? ⑤解释器(Interpreter)模式;
? ? ? ? ? ? ? ? ⑥观察者(Observer)模式;?
? ? ? ? ? ? ? ? ⑦责任链(ChainOfResponsibility)模式;
? ? ? ? ? ? ? ? ⑧迭代器(Iterator)模式;? ?
? ? ? ? ? ? ? ? ⑨中介者(Mediator)模式;
? ? ? ? ? ? ? ? ⑩备忘录(Memento)模式;
? ? ? ? ? ? ? ? ⑩+①:模板方法(TemplateMethod)模式;
? ? ? ? 总结:学好设计模式需要明白两点,第一七个原则,第二23种设计模式。