Java与模式读书笔记

》设计目标:可扩展性,灵活性,可插入性。

》设计原则

   ● Open Closed Principle 开闭原则

   对扩展开放,对修改关闭。

   对面向对象的语言来说,不可以更改的是系统的抽象层,而可以扩展的是系统的实现层。

   ●里式代换原则

   任何基类可以出现的地方,子类一定可以出现。

   ●依赖倒转原则

    要依赖于抽象,不要依赖于实现。

   ●合成/组合原则

    尽量使用复合而不是继承

   ●迪米特法则

    一个软件的实体应该减少与其他实体发生相互作用。

   ●接口隔离原则

   应该提供小的单独接口。

》抽象类

   ●抽象类应该拥有尽可能多的代码。

   ●抽象类应当拥有竟可能少的数据。

》创建模式:是对类的实例化过程的抽象化。

   ●类的创建模式:类的创建模式使用继承关系,把类的创建延迟到子类。从而封装了客户端将得到哪些具体类的信息。

   ●对象的创建模式:把对象的创建过程动态的委派给另一个对象。从而动态的决定客户端将得到那些具体类的实例。

》简单工厂模式(Simple Factory)

   ● 工厂类角色(Creator):工厂类在客户端的直接调用下创建产品对象。他往往有一个具体的Java类实现。

   ● 抽象产品角色(Product):是所有创建对象的父类,或是共同的接口。抽象产品的角色可以用一个Java接口实现。

   ●具体产品角色(Concrete Product):创建的任何角色都是这个对象的实例。有具体java类实现。

》工厂方法模式(Factory Method)

   ●定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类。

   ●抽象工厂角色(Creator):它是与应用程序无关的,任何在模式中创建对象的工厂类必须实现这个接口。

   ●具体工厂角色(Concrete Creaor):实现抽象接口,与应用密切的逻辑。并且受到程序的调用用来创建产品对象。

  ● 抽象产品角色(Product):是所有创建对象的父类,或是共同的接口。抽象产品的角色可以用一个Java接口实现。

   ●具体产品角色(Concrete Product):创建的任何角色都是这个对象的实例。有具体java类实现。

》抽象工厂模式(Abstract Factory)

   ●工厂方法模式对应的是一个产品等级结构。抽象工厂对应多个。

   ●抽象工厂角色(Creator):它是与应用程序无关的,任何在模式中创建对象的工厂类必须实现这个接口。

   ●具体工厂角色(Concrete Creaor):实现抽象接口,与应用密切的逻辑。并且受到程序的调用用来创建产品对象。

  ● 抽象产品角色(Product):是所有创建对象的父类,或是共同的接口。抽象产品的角色可以用一个Java接口实现。

   ●具体产品角色(Concrete Product):创建的任何角色都是这个对象的实例。有具体java类实现。

 》单例模式(Single) 

   ●某个类只有一个实例。

   ●自己创建实例。

   ●向整个系统提供实例。

》建造模式(Builder)

   ●将一个产品的内部表象与产品的生产过程分隔开来,从而可以使一个建造过程生成具有不同表象的产品对象。

   ●抽象建造者角色(Builder:给出一个抽象接口,以规范产品对象的各个组成成分的构建。

   ●具体建造者(Concrete Builder):与应用程序紧密相关联的一些类。他们在应用程序下调用创建产品的实例。

   ●产品角色(Product):建造中的复杂对象。

   ●导演者角色(Director):调用具体建造者创建产品对象。

 》原型模式(Prototype)

   ●给出一个原型对象来指明要创建的对象的类型,然后复制这个原型对象的办法来创建出更多类型的对象。

   ●客户端角色(Client):客户端向管理员提出创建对象的请求。

   ●抽象原型角色(Prototype)抽象接口

   ●具体原型角色(Concrete Prototype)被复制的对象。

   ●原型管理器(Prototype Manager)创建具体原型类的对象。

》》结构模式:如何将类或者对象结合在一起形成更大的结构。

   ●类的结构模式:通过继承

   ●对象的结构模式:把不同类型的对象组合在一起。

》适配器模式(Adapter):把类的接口转变为客户端所期待的另一种接口。

   ●目标角色(Target):期待的接口。

   ●源角色(Adatee):现在需要适配的接口。

   ●适配器角色(Adapter):把源接口转换为适配器接口。

  》合成模式(Composite)将对象组织到树结构中,可以用来描述整体与部分的关系。

   ●抽象构件角色(Component):这是一个抽象的角色,他给参加组合的对象定义出公共的接口及其默认的行为。用来管理所有的子对象。

   ●树叶构件角色(Leaf)没有下级子对象的对象。定义出参加组合的原始对象的行为。

   ●树枝构件对象(Composite) 代表参加组合的有下级子对象的对象。

》装饰模式:以对客户透明的方式扩展对象的功能。

   ●抽象构件角色(Component)规范准备接受附加责任的对象。

   ●具体构件(ConCrete Component)定义一个将要接收附加责任的类。

   ●装饰角色(Decorator)持有一个构件对象的实例,并定义一个与抽象构件一致的接口。

   ●具体装饰角色(Concrete Decorator)负责给对像贴上附加的责任。

》代理模式

   ●抽象主题角色 声明了真实主题和代理主题的共同接口,

   ●代理主题角色:含有对真实主题的引用,可以在任何的时候操作主体对象。

   ●真实主题角色:真实对象。

》亨元模式:亨元模式以共享的方式高效的支持大量的细粒度对象。

   ●抽象亨元角色:具体亨元类的超类。

   ●具体亨元角色:实现抽象所规定的接口。

   ●亨元工厂角色:创建和管理亨元角色。

   ●客户端:对亨元对象的引用。

》门面模式(Facade)外部与一个子系统通信必须通过一个门面对象进行。

   ●门面角色(Facade)客户端调用这个方法。此角色知晓相关子系统的功能和责任。

   ●子系统角色(Subsystem)可以是一个或多个。

》桥梁模式(Bridge)将抽象化与实现化解耦。

  

posted @ 2016-03-31 17:41  戎码一生  阅读(294)  评论(0编辑  收藏  举报