设计模式(JAVA)
软件设计模式:代码经验总结
设计模式分类
创建型模式:单例、原型、工厂方法、抽象工厂、建造者
结构型模式:代理、适配器、桥接、装饰、外观、享元、组合
行为型模式:模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器
类与类之间关系的表示方式8种
关联:顾客有一个地址对象的变量,该地址不依赖于客户而存在
双向关联:一个顾客购买多个产品,一个产品对应一个顾客(所属)
自关联;
聚合:学校有很多老师,每个老师都有一个学校,老师是学校的一部分,但老师在学校倒闭和仍然存在(整体和部分)
组合:头有一个嘴,一对耳朵等,嘴属于唯一的头。(整体和部分)
依赖关系(耦合度最弱):方法调用的时候所需要的参数(临时性)
继承关系:(耦合度最大):
实现关系;实现接口的功能
软件设计原则6种
开闭原则:皮肤(抽象父类)各种自定义皮肤(子类)
里氏代换原则:子类可以扩展父类的功能,但不能改变父类的功能(不能重写)
依赖倒转原则:对抽象进行编程,而不是对实现进行编程(在电脑的组件上都抽象出一个接口)
接口隔离原则:客户端不应该被迫依赖它不适用的方法。(门不应该都要实现防火、防盗、防水,使用接口将他们隔离)
迪米特法则:不跟陌生人说话(聚合关系)
合成复用原则:尽量使用组合和聚合的关系,其次才考虑继承关系。(如车的颜色)
设计模式分类
创建者模式5种
单例模式(静态)
饿汉式:静态成员变量创建对象
懒汉式:调用静态方法创建对象
工厂模式
简单工厂模式:工厂是一个点餐器和制造器(不同的参数制造不同的咖啡,if判断是哪个子类的咖啡,然后创建咖啡对象指向美式咖啡)
工厂方法(开闭原则):抽象出制作咖啡的工厂,从而将制作拿铁咖啡和美式咖啡工厂进行分离。
抽象工厂;生产不同类型的同一系列产品,抽象工厂分为美式工厂和意式工厂,美式工厂实现甜点子类美式甜点和咖啡子类的美式咖啡,意大利式工厂实现甜点子类意式甜点和咖啡子类的意式咖啡
原型模式
浅克隆:复制模板,但指向性属性相同。奖状继承接口clone方法,设置一个名字参数,其他为模板。
深克隆:
建造者模式
一个产品对象子类作为指导者的参数调用建造者,建造者根据传入产品对象的类别选择相应的建造者来实现建造者接口。
工厂模式是一个系列一次性完成,而建造者模式会逐步向下组装。
结构型模式7种
代理模式
火车票代售点和火车站继承售票接口,代售点创建火车站变量实现买票,同时添加自己的方法。
适配器模式
当电脑只能读取SD卡需要读取TF卡时,使用适配器继承TF卡,实现SD卡的接口。则电脑既可以读SD卡,也可以读TF卡。
装饰者模式?
配料继承实现快餐抽象类,调用父类方法且实现自己子类配料的方法。
桥接模式
外观模式
智能遥控,一个遥控操作多个家具。