0%

大话设计模式

记录一下《大花设计模式》的阅读

简单工厂模式

形式

  1. 工厂类
    1. 工厂类产出的产品

例子

Class BreadFactory

public static Bread createBread(参数){

​ 根据参数的不同,返回不同的面包

​ return new Bread();

}

策略模式

定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响使用算法的客户

我的理解–>利用多态

形式:

方法(策略)

例子

Class person{

​ Food food;

​ eat(Food food)

}

Class Food{}

Class Bread extends Food{}

Class Milk extends Food{}

客户端需要识别person、food两个类

策略模式与简单工厂模式结合

Class person{

​ eat(参数){

​ 根据参数的不同先创建(拿出)不同的食物,然后吃

}

}

客户端只需要识别person一个类

单一职责原则

就一个类而言,应该仅有一个引起他变化的原因

使程序 易维护、易拓展、易复用、灵活多样

职责过多,相当于把这些功能耦合在一起,一个职责的变化可能会削弱这个类完成其他职责的能力

开放-封闭原则

软件实体(类,模块,函数)应该可以拓展但不可以修改

对于拓展是开放的,对于修改是封闭的

–> 利用继承实现该原则

依赖倒转原则

1. 高层模块不应该依赖底层模块,两者都应该依赖抽象

2. 抽象不依赖细节,细节应该依赖抽象

里氏代换原则

子类型必须能够替换掉他们的父类型

依赖倒转可以说是面向对象设计的标志,所有依赖终止于抽象类或者接口

装饰模式

动态的给一个对象添加一些额外的职责,比生成子类更加灵活

例子:

class Person(){}

Class Finery(){

​ Person person

​ void add(Person person){

​ 给person穿衣服

}

}

class Yifu() extends Finery(){}

Yifu yifu = new Yifu();

yifu.add(new Person());

代理模式

为其他对象提供一种代理以控制对该对象的访问

我的理解 —> 人在海外,提供代理(???这里可能描述不对),国内的朋友可以帮我在国内买房子,代理可以实现跟我相同的功能

应用场景

  1. 远程代理
  2. 虚拟代理
  3. 安全代理
  4. 智能指引

工厂模式

定义一个用于创建对象的接口,让子类决定实例化哪一个对象。工厂方法使一个类的实例化延时到子类。

工厂模式与简单工厂模式

简单工厂模式添加新的类型方法时需要对工厂类做出修改,违背了开放-封闭原则

形式

工厂模式类似一个父类,对象的创建交给子类来做

原型模式

Donate comment here.

欢迎关注我的其它发布渠道