看大话设计模式读书笔记
简单工厂模式:
创建一个工厂类, Factory ,Factory内部有create方法,根据外部产生相应的实现类实体,返回的实体一般都继承了抽象类或实现了接口,create方法也就是返回的是这个抽象和实现,客户端就能使用这些实体使用接口类中的方法 ,还可以添加相应的实现类这样就可以体现出对扩展开放,对修改关闭,工程模式也体现了单一职责,因为每个实现类实体,就单独实现了一个功能,能影响到它的就一个因素,外部实现的方法,还有依赖倒转(使用的地方还挺多的)
策略模式:
跟工厂模式的区别是,工厂模式需要知道接口类,而策略模式则不用,比较适用于那些接口类中定义了很多对实体不相干的方法,需要屏蔽掉一些使用方法
单一职责:
外部只有一个因素可以影响到这个类的行为(这个我平时要注意应用)
开放封闭原则:
对扩展开放,对修改封闭(这个我平时要注意应用)
依赖倒转原则:
上层不直接依赖下层,他们都直接依赖抽象层,抽象不依赖实现,实现依赖抽象
代理模式:
一个类A原来是直接访问类B的,现在通过代理模式,生成了类B的代理类 ProxyB ,类B和代理类ProxyB 一般都继承或者实现某些接口和实现类 ,ProxyB持有了类B的实例,这样就可以在调用B类之前,做一些拦截或者校验处理
工厂方法模式:
和简单工厂模式最大的区别是选择使用什么工厂实现类交给了上层进行处理,基本没有见过有类似的使用方法,应该不太常用
原型模式:
原型模式主要核心思想是深拷贝和浅拷贝的问题,用原来的实例创建指定对象的种类,并通过拷贝这些原型创建新的对象(string 是一种拥有值类型特点的特殊引用类型)
模板方法:
提炼公共代码,减少重复定义(平时经常回用到)
外观模式:
分层概念,两个不相同的层,需要建立外观,Facade 知道哪些子系统负责处理请求,将客户的请求代理给适当的子系统,和代理模式不一样的是代理模式是一对一的,而外观模式是一对多的
观察者模式:
就是多个或者一个类B想知道另外一个类A的状态是否发生改变,这时候可以通过在类A中注册监听,一般是类B实现一个接口,将此接口传入A中,A发生改变后,遍历此监听的列表