设计模式
严太白
菊厂搬砖人
展开
-
设计模式---总结
设计模式分类指导思想可维护性:修改功能,需要改动的地方越少,可维护性就越好可复用性:代码可以被以后重复使用,写出自己总结的类库可扩展性:添加功能无需修改原来代码灵活性:代码接口可以灵活调用面向对象六大原则单一职责:一个类别太大,别太累,负责单一职责,高内聚低耦合开闭原则:对扩展开发,对修改关闭,尽量不修改原来代码的情况下进行扩展;抽象化,多态是开闭原则的关键里氏替换:所有使用父类的地方,必须能够透明的使用子类对象依赖倒置:依赖抽象,而不依赖具体;面向抽象编程原创 2021-08-16 23:40:21 · 70 阅读 · 0 评论 -
设计模式----原型(Prototype)&备忘录(Memento)&模板方法&状态模式
什么是原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象原型模式的核心就是一各clone方法1)java中自带2)实现原型模式需要实现标记型接口Cloneable3)一般会重写clone()方法4)如果只是重写clone()方法,而没有实现接口,调用时会报异常5)一般用于一个对象的属性已经确定,需要产生很多相同对象的时候,对象属性特别多6)需要区分深克隆和浅克隆/** * 浅克隆 */public class Test { ..原创 2021-08-16 23:15:37 · 214 阅读 · 0 评论 -
设计模式----建造者模式 Builder &适配器 Adapter&桥接 Bridge&Command命令
1.建造者模式 Builder主要用于构建复杂对象将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示//一个复杂对象 ,有非常多的属性,构建的时候可以通过构建器选择自己需要的属性//构建出自己需要的对象public class Person { int id; String name; int age; double weight; int score; Location loc; priva...原创 2021-08-11 23:51:30 · 391 阅读 · 1 评论 -
设计模式----访问者 Visitor&门面模式
在结构不变的情况下动态改变对于内部元素的动作应用:抽象语法树通用类图:举例:不同角色的人,来买电脑给出不同的优惠//电脑public class Computer { ComputerPart cpu = new CPU(); ComputerPart memory = new Memory(); ComputerPart board = new Board(); public void acccept(Visitor v) {...原创 2021-08-10 23:48:51 · 101 阅读 · 0 评论 -
设计模式----迭代器模式
它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节迭代器模式一般使用在容器与遍历上1.定义迭代器接口//定义迭代器接口public interface Iterator_<E> { //Element //Type //K //Value V Tank boolean hasNext(); E next(); //Tank next() Iterator_<Tank> it = ... Tank t = it.next();..原创 2021-08-09 22:07:40 · 79 阅读 · 0 评论 -
设计模式----代理模式
为其他对象提供一种代理以控制对这个对象的访问分为静态代理和动态代理静态代理1.tank和tank代理类实现同一个接口2.为tank生成两个代理类,每个代理类在执行tank的move方法时,都通过不同的手段实现方法的增加。3..TankLogProxy:在调用tank的move方法时,前后打印日志4.TankTimeProxy:在调用tank的move方法时,前后打印时间/** * 问题:我想记录坦克的移动时间 * 最简单的办法:修改代码,记录时间 * 问题2:如果.原创 2021-08-09 21:58:16 · 75 阅读 · 0 评论 -
设计模式----组合模式Composite&享元模式Flyweight
组合模式一般处理树状结构的将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。//定义树形结构中节点接口abstract class Node { abstract public void p();}//叶子节点类型class LeafNode extends Node { String content; public LeafNode(String content) {this.content = c...原创 2021-08-07 21:59:00 · 107 阅读 · 0 评论 -
设计模式----观察者模式
观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/subscribe),它是一个在项目中经常使用的模式定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新观察者模式通常有3个角色:1)Event:事件类型2)source:被观察者3)listener:观察者平时所看见的,Observer、Listener、Hook和Callback基本都属于观察者模式...原创 2021-08-05 23:30:24 · 100 阅读 · 0 评论 -
设计模式---责任链模式
使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止例子1:字符串过滤//消息类class Msg { String name; String msg; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg;.原创 2021-08-04 23:55:53 · 79 阅读 · 0 评论 -
设计模式-----简单工厂&工厂方法&抽象工厂
简单工厂简单工厂模式的工厂类用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力)public class Car{ public void function1(); public void function2();}public class Broom{ public void function1(); public void function2();}/** * 简单工厂的可扩展性不好 */public class Sim原创 2021-08-03 22:54:57 · 98 阅读 · 0 评论 -
设计模式-----策略模式
根据不同的策略,方法执行有不同效果典型的例子----java中comparator比较器的概念,每次容器排序时,传入我们自己设计好的比较器,会根据比较器来进行排序。制定比较器接口,里面有一个compare方法//定义比较器接口@FunctionalInterfacepublic interface Comparator<T> { int compare(T o1, T o2); default void m() { System...原创 2021-08-02 23:12:40 · 77 阅读 · 0 评论 -
设计模式-----单例模式
1.饿汉式/** * 饿汉式 * 类加载到内存后,就实例化一个单例,JVM保证线程安全 * 简单实用,推荐使用! * 唯一缺点:不管用到与否,类装载时就完成实例化 * Class.forName("") * (话说你不用的,你装载它干啥) */public class Mgr01 { private static final Mgr01 INSTANCE = new Mgr01(); private Mgr01() {}; public static原创 2021-08-02 22:53:33 · 79 阅读 · 0 评论