![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OOP
文章平均质量分 76
Jeffrey-Gao
这个作者很懒,什么都没留下…
展开
-
创建型模式-工厂方法
工厂方法模式结构图 模式说明1. 扩展点是ConcreteProduct,如果有一个新的Product实现类ConcreteProduct,则需要创建一个新的工厂类ConcreteCreator。这是为了满足开放封闭原则。2. 每一个Creator只负责一种类型的Product。3. 客户端需要知道使用哪个具体的ConcreteCreator。4. 客户端不关心使用哪个原创 2015-01-06 13:54:43 · 549 阅读 · 0 评论 -
结构型模式-享元
结构图模式说明扩展点在享元接口Flyweight的实现类。Flyweight的实现由共享和非共享两种,Condition作为外部条件封装,提供给Flyweight操作方法使用参数。客户端不需要知道具体使用哪个Flyweight实现,只需要根据key按需取用即可。运用享元可有效支持大量细粒度的对象。客户端public static void main(String[] a原创 2015-02-17 11:18:34 · 448 阅读 · 0 评论 -
结构型模式-代理
结构图模式说明扩展点在Subject的实现类RealSubject中的方法。Proxy类把Subject实现类封装在类里面,但暴露出的接口和Subject一致。客户端不需要知道Proxy具体使用的是哪一个Subject实现类。为其他对象提供一种代理以控制对这个对象的访问。客户端public static void main(String[] args) { Prox原创 2015-02-28 13:29:58 · 420 阅读 · 0 评论 -
结构型模式-组合
结构图模式说明无类级扩展点。扩展方法在抽象接口Component中。Component提供Composite和Leaf的抽象接口声明和共有方法。Leaf是Component的特殊形式,Composite是Component的一般树状结构描述。客户端需要知道具体使用哪个Component具体实现类。将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象的使原创 2015-02-15 10:29:43 · 455 阅读 · 0 评论 -
行为型模式-观察者
结构图模式说明扩展点在每个具体主题Subject的状态控制,具体观察者Observer的更新操作。抽象Subject中保存有抽象Observer的一个集合,而每个具体Observer则持有一个具体Subject的引用。客户端需要知道使用具体哪个Subject描述状态和具体哪个Observer来更新操作。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的原创 2015-03-04 14:42:39 · 417 阅读 · 0 评论 -
行为型模式-策略
结构图模式说明扩展点在每一个具体的Strategy实现类。一个Context上下文持有一个具体Strategy实现类的引用。客户端可以替换Strategy的实现类,不改变算法的变化。定义一系列的算法,把它们一个个封装起来,并使它们可以相互替换,该模式使得算法可独立于使用它的客户而变化。客户端 public static void main(String[] args)原创 2015-03-20 16:32:27 · 418 阅读 · 0 评论 -
行为型模式-模板方法
结构图 模式说明1. 扩展点在抽象类AbstractClass的实现子类。2. 每一个实现子类实现一种抽象方法的算法实现,子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。3. 客户端可以替换不同的子类实现。4. 定义一个操作的算法骨架,而将一些步骤延迟到子类中实现,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。客户端原创 2015-04-02 20:25:45 · 538 阅读 · 0 评论 -
行为型模式-职责链
客户端public static void main(String[] args) { Chain c1 = new ConcreteChain1(); Chain c2 = new ConcreteChain2(); Chain c3 = new ConcreteChain3(); c1.setSuccessor(c2); c2.setSuccessor(c3); i原创 2015-06-23 20:39:56 · 417 阅读 · 0 评论 -
行为型模式-命令
结构图模式说明扩展点在多个不同的ConcreteCommand可以用来实现Command接口。Invoker可以用来管理一个或者多个Command对象。客户端使用Invoker去调用具体的Command对象或者Command对象集合。将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,可以对请求排队或记录请求日志,以及支持可撤销的操作。客户端public原创 2015-06-08 13:58:46 · 503 阅读 · 0 评论 -
行为型模式-状态
结构图客户端public static void main(String[] args) { // 设置Context的初始状态为ConcreteStateA Context ctx = new Context(new ConcreteStateA()); ctx.request(); ctx.request(); ctx.request();原创 2015-06-09 16:34:12 · 454 阅读 · 0 评论 -
结构型模式-装饰
结构图模式说明扩展点在具体的ConcreteDecorator,若增加一个新的Decorator类,无需改动整个结构。客户端需要知道具体哪个Component实现类,以及每一个Decorator的实现类。客户端可以定制Decorator的执行顺序。动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更加灵活。客户端public static void原创 2015-01-21 10:21:48 · 470 阅读 · 0 评论 -
面向对象的设计模式-2
设计模式类别创建型模式、结构型模式、行为型模式 创建型模式工厂方法模式、单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式 创建型模式隐藏了这些类的实例是如何被创建和放在一起,整个系统关于这些对象所知道的是由抽象类所定义的接口。这样,创建型模式在创建了什么、谁创建它、它是怎么被创建的,以及何时创建这些方面提供了很大的灵活性。 结构型模式外观模式、适配器模原创 2014-12-30 17:05:59 · 472 阅读 · 0 评论 -
创建型模式-单例
单例模式结构图模式说明1.单例模式一般是无状态类。2.保证一个类仅有一个实例,并提供一个访问它的全局访问点。客户端public static void main(String[] args) { Singleton instance = Singleton.getInstance(); ConcurrentSingleton inst1 = Conc原创 2015-01-08 17:04:50 · 373 阅读 · 0 评论 -
创建型模式-简单工厂
结构图模式说明扩展点是Operation的实现类,如果增加新的Operation实现类,需要修改工厂类OperationFactory,即在OperationFactory条件分支中增加新的判断类型。使用反射技术的工厂类,可避免因增加Operation实现而需要修改工厂条件分支的缺点。客户端需要知道使用哪个工厂类OperationFactory或者OperationFactor原创 2015-01-09 15:57:55 · 431 阅读 · 0 评论 -
结构型模式-桥接
结构图模式说明扩展点在两条线,一条是Abstraction的实现类;另一条是Implementor的实现类。Abstraction通过持有一个implementor对象的引用,在Abstraction和Implementor之间建立一个bridge,因此可以让系统在两个维度上独立发展。客户端可以选择使用哪个具体的Abstraction。客户端可以选择使用哪个具体的Impleme原创 2015-01-28 17:02:43 · 392 阅读 · 0 评论 -
创建型模式-抽象工厂
结构图模式说明扩展点在AbstractProduct接口的实现类,如果有一对新的实现ProductA3,ProductB,则需要修改抽象工厂AbstractFactory接口---在工厂中增加方法createProductC,然后在具体的实现类ConcreteFactory1和ConcreteFactory2中实现该方法。客户端需要知道使用哪个具体的AbstractFactor原创 2015-01-12 14:03:36 · 427 阅读 · 0 评论 -
创建型模式-建造者
结构图模式说明扩展点在Builder接口的具体实现类,如果有一个新的实现类ConcreteBuilder3,则只需要添加该实现类,其他部分不用修改。客户端需要知道使用哪个具体的Builder实现类。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。客户端public static void main(String[] args) { Di原创 2015-01-13 16:14:11 · 520 阅读 · 0 评论 -
创建型模式-原型
结构图模式说明原型模式其实是从一个对象再创建另外一个相同的对象,而且不需要知道创建对象的细节。在初始化信息不发生变化的情况下,使用clone既隐藏了对象创建的细节,又能对性能大大提高。等于是不用重新对象初始化,而是动态获得对象运行时状态。如果对象的字段类型是值类型,则对该字段执行逐位复制,如果字段类型是引用类型,则默认的clone只复制引用而不复制引用的对象。String是一种原创 2015-01-14 14:39:28 · 496 阅读 · 0 评论 -
结构型模式-外观
结构图 模式说明扩展点在SubSystem集合。增加一个具体的子系统后,可能但不一定需要修改Façade外观类。客户端需要知道具体哪一个Façade外观类。客户端不需要关系到底哪个SubSystem类负责Façade外观类的何种任务。外子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。客户端public s原创 2015-01-15 10:38:46 · 446 阅读 · 0 评论 -
面向对象的设计模式-1
面向对象特点封装、继承、多态、高聚合低耦合。 面向对象原则单一职责就一个类而言,应该仅有一个引起它变化的原因开放封闭软件实体(类、模块、方法)对于扩展是开放的,对于修改是封闭的。里氏代换一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它觉察不出父类对象和子类对象的区别。依赖倒转高层模块不应该依赖低层模块,两个都应该依赖抽象;抽象不应该依赖原创 2014-12-26 11:31:32 · 411 阅读 · 0 评论 -
结构型模式-适配器
结构图模式说明扩展点在Adaptee类,Adaptee可以被其他类替换。客户端需要知道哪个具体的Adapter负责将Adaptee转换成需要的Target接口。客户端不关心具体哪个Adaptee被适配和转换的。将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。客户端public static void main原创 2015-01-19 11:06:05 · 420 阅读 · 0 评论 -
行为型模式-解释器
结构图模式说明扩展点在AbstractExpression实现类Context是这个解释器的语法定义,不同的Expression实现代表有不同的语法实现给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子客户端public static void main(String[] args) {原创 2015-07-14 20:49:56 · 504 阅读 · 0 评论