设计模式 - java与模式

软件系统开发的两个重点问题:可维护性与可重用性。

面向对象系统的几大原则:
    1. 开闭原则(OCP, Open-Closed Principle),对扩展开放,对修改关闭。
    2. 里氏代换原则(LSP, Liskov Subsititution Principle),子类对象可以出现在任何父类对象出现的地方。
    3. 依赖倒转原则(DIP, Dependence Inversion), 底层类依赖于高层类,具体实现依赖于抽象逻辑。
    4. 接口隔离原则(ISP, Interface Segregation Principle), 使用多个专门的接口比使用单一的总接口要好。
    5. 合成、聚合复用原则(CARP, Composition\ Aggregation Reusable Priciple), 尽量使用合成、聚合,尽量不要使用继承。
    6. 迪米特法则(Law of Demeter), 最少知识原则:一个对象应当对其他对象有尽可能少的了解。
    
创建型
    简单工厂、工厂方法、抽象工厂:专门用于生成不同类型的对象,客户端与具体类之间解耦。
    单件模式(Singliton):只生成一个对象。系统配置文件,序列号生成器。
    建造者(Builder)模式:用于生成复杂的、需要多步初始化操作的模式。在运行一个算法前,不同的数据需要加载、不同的参数、模块的选择。
    原型(Prototype)模式:通过给出一个原型对象,来指明所要创建对象的类型,然后用复制这个原型对象的方法创造出更多同类对象。Java的clone方法、拷贝构造函数也有一点意思。

结构型
    适配器(Adapter)模式:采用继承或者持有示例的方法改变已有类的接口。适用于改变现有类的接口。
    合成(Composite)模式:也叫整体、部分模式;可以让客户端将单纯元素与复合元素同等对待。可用于建模文件与文件夹这个系统。
    装饰器(Decorator)模式:又叫包装器(Wrapper)模式,通过持有一个类的实例,将自身功能委托到这个实例来完成。用于扩展一个类的功能。
    代理(Proxy)模式:有如下分类:远程代理,虚拟代理,Copy-on-Write代理,保护代理,Cache代理,防火墙,同步化代理,智能引用代理。
    享元(FlyWeight)模式:以共享的方式,高效地支持大量的细粒度对象。
    门面(Facade)模式:外部与子系统的通信必须通过一个统一的门面对象进行。
    桥梁(Bridge)模式:
    

行为型
    不变(Immutable)模式:对象一旦生成,在整个生命周期都不会改变。增强程序健壮性;允许高效地共享。
    策略(Strategy)模式:针对一组算法,将每个算法封装到具有共同接口的独立的类中,使他们可以互换。
    模板方法(Template Method)模式:抽象类规定总体逻辑,具体类具体实现总体逻辑的每个方法。Servlet就是使用了模板方法。
    观察者(Observer)模式:又叫做发布-订阅模式、模型-视图模式、源-监听器模式、从属者模式。定义了一种一对多的依赖关系:多个观察者同时监听一个状态,这个状态发生改变时,会通知所有监听者。用户界面、回调函数、MVC。
    迭代子(Iterator)模式:顺序访问一个聚集中的元素而不暴露其内部结构。
    责任链(Chain of Responsibility)模式:用于具有传递性、等级的请求处理系统。
    命令(Command)模式:把请求或者操作封装到一个对象中。
    备忘录(Memento):又叫快照模式。备忘录对象是用于存储另外一个对象内部状态的快照。
    状态(State):允许一个对象在其内部状态改变的时候改变其行为。
    访问者(Visitor):封装一些施加于某种数据结构元素上的操作。一旦操作需要修改,接受这些操作的数据结构不用改变。
    解释器(Interpreter):定义一种文法,同时为其提供解释器。针对频繁出现的操作,将其定义为一种简单语言中的语句。
    调停者(Mediator):包装对象之间的相互作用,而对象之间不必有明显的引用。
    
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值