三大类型设计模式,概念先摆出来(是不是可以理解在设计模式基础上又抽象了一把呢,厉害吧)
创建型模式:核心在对象如何创建
什么在代码里面使用new,low不low,是不是有人常说不要再代码里面创建对象,要使用依赖注入或者控制反转。换成白话就是不要在代码里面用new。程序需要什么对象的时候,创建一个对象给他,注入给他,而不是在程序里面new。
还是那个例子,弟弟要学习了,要一个教学器,怎么办,在弟弟学习的方法中使用new创建一个姐姐或者老师吗,NO,NO,NO,弟弟今天不喜欢姐姐教怎么办,重新new个老师。最好是给弟弟一个教学器,在学习的方法中通过参数注入对象,或者从构造方法中注入对象,给你教学器,今天想姐姐用姐姐,想老师用老师。好不好,灵活吗。不够高大上,给个高大上的叫法,叫依赖注入,或者控制反转,瞬间高大上了有没有。
这一类有哪些设计模式呢,以下都是:
-
- 工厂模式(Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 单例模式(Singleton Pattern)
- 建造者模式(Builder Pattern)
- 原型模式(Prototype Pattern)
结构型模式:这些设计模式关注类和对象的组合
继承的概念被用来组合接口和定义组合对象获得新功能的方式。核心呢,类是怎么形成的,对象是如何组织的,说实话和行为模式,我有点分不清,核心有差异吧,这个是对象如何组合而行为模式是对象如何交互。神马,听不懂,就是如何把对象组织起来,不是仅仅一个对象了,多个对象了,如何组织起来。比如观察者模式,有目标(被观察者)和观察者,两个对象了,如何组织。又比如,我要一只鸡,你给我了一只鸭,我怎么办,哭吗,当然不是,要解决问题,把鸭变成鸡,神马,你是上帝,我当然不是上帝,我只是抽象出了一个鸡的类,然后有个鸡类转换器,把鸭子变成了鸡而已。
这类模式有以下几种:
-
- 适配器模式(Adapter Pattern)
- 桥接模式(Bridge Pattern)
- 过滤器模式(Filter、Criteria Pattern)
- 组合模式(Composite Pattern)
- 装饰器模式(Decorator Pattern)
- 外观模式(Facade Pattern)
- 享元模式(Flyweight Pattern)
- 代理模式(Proxy Pattern)
行为型模式:对象之间如何交互,就是对象之间如何发生点什么
交互的本质是什么,是信息啊,抽象点,这个行为是什么,就是通信。我们和服务怎么通信,服务处理完逻辑,将成果写在statis_v2那张数据表里面了,我们从数据表里面拿数据,这本质数据表就是我们WEB和服务的通信方式,这个通信的媒介是什么,是数据表啊。行为型模式,就是处理我们WEB和服务的行为的啊。
这类设计模式有以下几种:
- 责任链模式(Chain of Responsibility Pattern)
- 命令模式(Command Pattern)
- 解释器模式(Interpreter Pattern)
- 迭代器模式(Iterator Pattern)
- 中介者模式(Mediator Pattern)
- 备忘录模式(Memento Pattern)
- 观察者模式(Observer Pattern)
- 状态模式(State Pattern)
- 空对象模式(Null Object Pattern)
- 策略模式(Strategy Pattern)
- 模板模式(Template Pattern)
- 访问者模式(Visitor Pattern)
其它模式:J2EE 模式 关注整个事务流程
怎么样回到面向过程了吗,这就是我说的面向对象和面向过程两者你中有我,我中有你,是这个意思吧。
该类设计模式有以下几种:
-
- MVC 模式(MVC Pattern)
- 业务代表模式(Business Delegate Pattern)
- 组合实体模式(Composite Entity Pattern)
- 数据访问对象模式(Data Access Object Pattern)
- 前端控制器模式(Front Controller Pattern)
- 拦截过滤器模式(Intercepting Filter Pattern)
- 服务定位器模式(Service Locator Pattern)
- 传输对象模式(Transfer Object Pattern)
总结下: