`
chenzhaogogogo
  • 浏览: 21282 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

23种设计模式的代码版(Java) ---结构型

阅读更多
//**********结构型模式**********  
   
  //Adapter    
  //基本方法有两种,一种是使用引用一种使用继承  
  //将不符合标准的接口转成符合标准的接口,接口的修改主要是参数的增减,  
  //返回值类型,当然还有方法名  
  //感觉这就是封装的另一种表示形式,封装有用方法封装(在方法中调用功能方法),  
  //用类封装(先传入功能方法所在的类的对象,通过调用此对象的功能方法)  
   
  //使用引用的形式  
  class   Adapteea   {  
  public   void   kk()   {}  
  }  
   
  interface   Targeta   {  
  String   vv(int   i,   int   k);  
  }  
   
  class   Adaptera   implements   Targeta{  
  Adapteea   ade;  
   
  public   Adaptera(Adapteea   ade)   {  
  this.ade   =   ade;  
  }  
   
  public   String   vv(int   i,   int   k)   {  
  //具体的业务方法实现在Adaptee中,这个方法  
  //只起到了接口转换的作用  
  //调用此方法是通过引用  
  ade.kk();  
  return   null;  
  }  
  }  
   
  //使用继承形式的  
  class   Adapteeb   {  
  public   void   kk()   {}  
  }  
   
  interface   Targetb   {  
  String   vv(int   i,   int   k);  
  }  
   
  class   Adapterb   extends   Adapteeb   implements   Targetb   {  
  public   String   vv(int   i,   int   k)   {  
  //调用此方法是通过继承  
  kk();  
  return   null;  
  }  
  }  
   
  //Proxy    
  interface   Subject   {  
  void   request();  
  }    
   
  class   realSubject   implements   Subject   {  
  public   void   request()   {  
  //do   the   real   business  
  }  
  }  
   
  class   Proxy   implements   Subject   {  
  Subject   subject;  
   
  public   Proxy(Subject   subject)   {  
  this.subject   =   subject;  
  }  
   
  public   void   request()   {  
  System.out.println("do   something");  
   
  subject.request();  
   
  System.out.println("do   something");  
  }  
  }  
   
  //Bridge    
  //感觉就是多态的实现  
   
  interface   Imp   {  
  void   operation();  
  }  
   
  class   Cimp1   implements   Imp   {  
  public   void   operation()   {  
  System.out.println("1");  
  }  
  }  
   
  class   Cimp2   implements   Imp   {  
  public   void   operation()   {  
  System.out.println("2");  
  }  
  }  
   
  class   Invoker   {  
  Imp   imp   =   new   Cimp1();  
   
  public   void   invoke()   {  
  imp.operation();  
  }  
  }  
   
  //Composite      
  interface   Component   {  
  void   operation();  
   
  void   add(Component   component);  
   
  void   remove(Component   component);  
  }  
   
  class   Leaf   implements   Component   {  
  public   void   operation()   {  
  System.out.println("an   operation");  
  }  
   
  public   void   add(Component   component)   {  
  throw   new   UnsupportedOperationException();  
  }  
   
  public   void   remove(Component   component)   {  
  throw   new   UnsupportedOperationException();  
  }  
  }  
   
  class   Composite   implements   Component   {  
  List   components   =   new   ArrayList();  
   
  public   void   operation()   {  
  Component   component   =   null;  
   
  Iterator   it   =   components.iterator();  
  while   (it.hasNext())   {  
  //不知道此component对象是leaf还是composite,  
  //如果是leaf则直接实现操作,如果是composite则继续递归调用  
  component   =   (Component)   it.next();  
  component.operation();  
  }  
  }  
   
  public   void   add(Component   component)   {  
  components.add(component);  
  }  
   
  public   void   remove(Component   component)   {  
  components.remove(component);  
  }  
  }  
   
  //Decorator    
  //对一个类的功能进行扩展时,我可以使用继承,但是不够灵活,所以选用了  
  //另外的一种形式,引用与继承都可活得对对象的一定的使用能力,而使用引用将更灵活  
  //我们要保证是对原功能的追加而不是修改,否则只能重写方法,或使用新的方法  
  //注意concrete的可以直接new出来,  
  //而decorator的则需要用一个另外的decorator对象才能生成对象  
  //使用对象封装,和公用接口  
  //Decorator链上可以有多个元素  
   
  interface   Componenta   {  
  void   operation();  
  }  
   
  class   ConcreteComponent   implements   Componenta   {  
  public   void   operation()   {  
  System.out.println("do   something");  
  }  
  }  
   
  class   Decorator   implements   Componenta   {  
  private   Componenta   component;  
   
  public   Decorator(Componenta   component)   {  
  this.component   =   component;  
  }  
   
  public   void   operation()   {  
  //do   something   before  
   
  component.operation();  
   
  //do   something   after  
  }  
  }  
   
  //Facade    
  //非常实用的一种设计模式,我可以为外部提供感兴趣的接口  
   
  class   Obj1   {  
  public   void   ope1()   {}  
  public   void   ope2()   {}  
  }  
   
  class   Obj2   {  
  public   void   ope1()   {}  
  public   void   ope2()   {}  
  }  
   
  class   Facade   {  
  //我得到了一个简洁清晰的接口  
  public   void   fdMethod()   {  
  Obj1   obj1   =   new   Obj1();  
  Obj2   obj2   =   new   Obj2();  
   
  obj1.ope1();  
  obj2.ope2();  
    }  
  }  
   
  //Flyweight  
  //空
分享到:
评论

相关推荐

    java之23种设计模式完整代码

    在Java中,这23种设计模式分为三大类:创建型、结构型和行为型。 1. **创建型设计模式**: - **单例模式**:确保一个类只有一个实例,并提供全局访问点。 - **工厂方法模式**:定义一个用于创建对象的接口,让...

    java23种设计模式及其代码

    这篇资料"java23种设计模式及其代码"涵盖了这些模式的详细解释和实际代码实现,对于学习和理解设计模式具有极大的帮助。 1. 创建型模式(5种): - 单例模式:保证一个类只有一个实例,并提供一个全局访问点。 - ...

    2020版23种Java设计模式-图解-附代码.pdf

    本教程详细介绍了23种经典的Java设计模式,包括创建型、结构型和行为型模式。下面将对这三大类模式进行深入解析。 1. **创建型模式**: - **工厂方法模式**:定义一个用于创建对象的接口,让子类决定实例化哪一个...

    java23种设计模式详解+源码(绝对详解)

    在Java编程中,有23种经典的GoF(Gang of Four)设计模式,它们被分为三大类:创建型、结构型和行为型。本资源集合了这些模式的详细解释与源码分析,旨在帮助开发者深入理解和应用设计模式。 1. 创建型模式...

    Java之23种设计模式解析

    这份资料详细介绍了在Java编程中常用的23种设计模式,旨在提升开发者对于软件设计的理解和应用能力,从而写出更加高效、可维护和可扩展的代码。 首先,我们来看一下23种设计模式的分类:它们可以分为三大类,即创建...

    Java设计模式----通俗易懂版

    这23种设计模式可以分为三类:创建型、结构型和行为型。 1. 创建型设计模式: - 单例模式:保证一个类只有一个实例,并提供全局访问点。 - 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类...

    大型商场应急预案管理系统-大型商场应急预案管理系统的设计与实现代码-java-springboot-代码-源码-项目-系统-毕设

    大型商场应急预案管理系统-大型商场应急预案管理系统的设计与实现代码-java-springboot-基于springboot的大型商场应急预案管理系统项目-代码-源码-项目-系统-毕设-网站 1、技术栈:java,springboot,vue,ajax,...

    《Java设计模式》课后答案-刘伟.rar

    本书涵盖了23种经典的GOF(GoF,Gang of Four)设计模式,包括创建型、结构型和行为型三大类。创建型设计模式如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和...

    极客学院java-23种设计模式

    在Java领域,23种设计模式被广泛接受,它们分为三大类:创建型、结构型和行为型。下面,我们将详细探讨这些设计模式以及它们在实际开发中的应用。 1. 创建型设计模式: - 单例模式(Singleton):确保一个类只有一...

    java设计模式---诙谐易懂版

    设计模式一般分为三大类:创建型模式、结构型模式和行为型模式。 3. 根据文件内容,诸葛亮给赵云的三个锦囊妙计可以用策略模式来实现。每个妙计对应一个实现了策略接口的具体策略类。例如,BackDoor类实现了...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    Java代码积累:并发 设计模式 数据结构 使用容器 实用 类 基础知识 并发性 演示线程的生命周期 生产者-消费者 设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者...

    软件体系结构---设计模式的java运行代码案例

    在Java中,有三种主要的设计模式类别:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)。这些模式帮助我们编写可维护、可扩展和可复用的代码。 创建型...

    Java开发中的23种设计模式代码整理

    这个压缩包文件包含了23种经典的Java设计模式,这些模式通常被分为三大类:创建型、结构型和行为型。 1. 创建型设计模式: - 单例模式:确保一个类只有一个实例,并提供全局访问点。 - 工厂方法模式:定义一个...

    Java-设计模式.zip

    这个“Java-设计模式.zip”压缩包很可能是包含一系列关于Java设计模式的教程或者代码示例。其中,“2.Java面对-10-设计模式”可能是一个文档或章节,专门讨论面向对象的设计模式。 设计模式分为三类:创建型、结构...

    Java23种设计模式可直接运行Demo

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    java23种设计模式详细讲解

    《java23种设计模式详细讲解》这本书系统地介绍了23种设计模式,并通过具体的例子来阐释每种模式的应用场景和实现方式,旨在帮助程序员提升设计能力,编写更优雅、可维护的代码。书中的内容涵盖了创建型模式、结构型...

    大型商场应急预案管理系统的设计与实现代码-java-springboot-基于springboot大型商场应急预案管理系统-代码

    大型商场应急预案管理系统的设计与实现代码-java-springboot-基于springboot的大型商场应急预案管理系统项目-代码-源码-项目-系统-毕设-网站 1、技术栈:java,springboot,vue,ajax,maven,mysql,MyBatisPlus等 2...

    Java23种设计模式.pdf

    在Java开发中,设计模式可以分为三类:创建型模式、结构型模式和行为型模式。创建型模式主要关注如何创建对象,结构型模式着重于对象和类的组合,行为型模式则专注于对象间的通信。 创建型模式包括如下几种: - ...

Global site tag (gtag.js) - Google Analytics