尚学堂-马士兵老师大致讲的,总结一下
1.单例模式(单态模式):
在程序运行过程中只有几个类或是只有一个类,达到“单例模式”。无论外部类调用多少次“构造”,内存中只是分配一次实例化的对象,达到单例模式。外部不能创建对象,所以必须在原来内部创建对象,以备外部调用。由于外面没有创建对象的情况下,只能反问static 方法,故返回创建的对象的方法必须是static类型,而静态方法只能访问静态成员变量,故实例化的对象类型必须是static类型。
单例,多例,静态工厂设计,三者”密不可分“,明白即可。在工厂中出现单例设计模式,而不重新讲解。静态工厂与普通工厂有区别,两者冲突,只用一个。
2.普通工厂设计模式:
生产的东西交给工厂。使其脱离耦合度。
普通工厂:可以扩展产品的,(扩展产品工厂),若扩充产品系列就麻烦那,会导致工厂类泛滥。
抽象工厂:不适于扩展新的产品品种,那将改动很多,改动抽象工厂接口,新增功能,和具体工厂的功能。
Spring 的Bean工厂。
任意定制交通工具类型(也不是任意,是某子类)。
任意生产过程方法:为了统一写法,必须使用抽象(交通工具)工厂。
抽象工厂:换肤的软件-整体的风格都变化了,按钮、菜单。
3.策略设计模式:(_Strategy)
4.事件设计模式【监听者】(Observer).有监听类,及其监听道的事件类型。
设计模式里面:解释器不重要。
装饰器简单。
追美眉的设计模式: 包含。
5.Brige(桥接)【送礼物】模式自学较为困难。使其集成关系脱离,慎用集成,以免子类太多,继承关系本身就是耦合高。
向2个维度上扩展,如例子上,一个维度上是按照具体类型来划分,另一种是按照类型来划分,导致子类层出不穷。
就应该即支持2个维度上的扩展。
核心:掌握到了这一点就行。用聚合代替继承,是一个很常用的手段。
桥接模式也不是用的很多,非常少用,就马士兵都没用过。2个维度排列组合就用桥接。
用组合代替继承。
6.适配器设计模式(Adapter):java IO包 的InputStreamReader 就是适配,一边是InputStream,一边是Reader,来个InputStreamReader转接。
设计模式的区分在于语意,而不是语法。充电器的电压。一边一个接口,另一边是另外一个接口,彼此不相容,就适配器。
其中JDBC-ODBC就是适配器,java要访问ODBC,但是不能直接访问,中间通过JDBC来访问就解决了问题,JDBC一边连接JAVA,一边连接ODBC.这就是
JDBC-ODBC桥。有时候和代理区分不是明显,但是这只是语义上的区分。
7.Command(命令)言听计从。让他做各种格言的事情。doSomething(),将来还会扩展。
原始的23种设计模式:最开始时候,Command设计模式是:做菜单的Undo(历史记录),返回---撤销。
一个请求来,可以让任何对象来执行。所以才有上面的对所以操作都可以“撤销”!撤销画过的图,撤销写的字。
在所有的图形化的操作的撤销时候:实现Undo(),要用栈来记录所有执行过的操作,因为后执行先Undo。
Struts说自己实现的Command,完成某项功能命令。其实是:?
明明可以一次让Boy完成许多操作,所以Boy应该拥有许多Command的引用,即集合类:List。
8.State:用得也不多。一个类的动作因类的状态不同而有不同。
把if-else变成模式了
9.装饰设计模式:decorator。
mediator:【非常的简单】调停者设计模式。作为系统内部来调停。中介者,顾问。设计模式版的坦克大战里面有。
。