`

编程设计模式

    博客分类:
  • java
 
阅读更多
转自:http://blog.csdn.net/longronglin/article/details/1454315
创建模式 结构模式 行为模式
创建模式:对类的实例化过程的抽象。一些系统在创建对象时,需要动态地决定怎样创建对象,创建哪些对象,以及如何组合和表示这些对象。创建模式描述了怎样构造和封装这些动态的决定。包含类的创建模式和对象的创建模式。
结构模式:描述如何将类或对象结合在一起形成更大的结构。分为类的结构模式和对象的结构模式。类的结构模式使用继承把类,接口等组合在一起,以形成更大的结构。类的结构模式是静态的。对象的结构模式描述怎样把各种不同类型的对象组合在一起,以实现新的功能的方法。对象的结构模式是动态的。
行为模式:对在不同的对象之间划分责任和算法的抽象化。不仅仅是关于类和对象的,并是关于他们之间的相互作用。类的行为模式使用继承关系在几个类之间分配行为。对象的行为模式则使用对象的聚合来分配行为。
一 : 单例模式(Singleton)
单例模式:Singleton的作用是保证在应用程序中,一个类Class只有一个实例存在。并提供全局访问。
结构:
账本类:1 单一实例 2 给多个对象共享 3 自己创建
网页计数器
public class LazySingleton
{
     private static LazySingleton newInstance = null;
  private LazySingleton ()
{
}
public static synchronized  LazySingleton getInstance ()
{
               if (newInstance == null)
{
                newInstance = new LazySingleton ();
          }
          return newInstance;
}
}
singleton
限制了实例个数,有利于gc的回收。
二:策略模式(Strategy)  
策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。
结构:
使用QQ泡MM时使用外挂  客户端 :ME 抽象类: 外挂 具体:策略(图片,笑话,名人名言)
public interface Strategy {
//策略方法 //
    public abstract double method();
}
public class Strategy1 implements Strategy {
      @Override
      public void method() {
         System.out.println(this.getClass().getName() + "的方法");
 
      }
}
public class Strategy2 implements Strategy { 
    @Override
 
    public void method() { 
       System.out.println(this.getClass().getName() + "的方法");
    }
}
public class Context {
//上下文类 //
      private Strategy mstrategy;
      public Context(Strategy strategy) {
            this.mstrategy = strategy;
      }
 //策略方法 //
     public void method() {
        this.mstrategy.method();
     }
}
主类
public static void main(String[] args) {
      Context context = new Context(new Strategy1());
      context.method();// 执行算法1
      context = new Context(new Strategy2());
      context.method();// 执行算法2
}
三:原型模式(Prototype)
原型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法
结构:

实例一:浅拷贝
public class Prototype implements Cloneable {
 private String name;

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Object clone() {
  try {
   return super.clone();
  } catch (CloneNotSupportedException e) {   
   e.printStackTrace();
   return null;
  }
 } 
 
}

public class TestMain {

 public static void main(String[] args) {
  testPrototype();
 }
 
 private static void testPrototype(){
  Prototype pro = new Prototype();
  pro.setName("original object");
  Prototype pro1 = (Prototype)pro.clone();
  pro.setName("changed object1");
  
  System.out.println("original object:" + pro.getName());
  System.out.println("cloned object:" + pro1.getName());
  
 }

}
结果:
original object:changed object1
cloned object:original object

 

四:门面模式(Façade)
门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用,减少复杂性。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。
 

public class ModuleA {
    //示意方法
    public void testA(){
        System.out.println("调用ModuleA中的testA方法");
    }
}
复制代码
复制代码
public class ModuleB {
    //示意方法
    public void testB(){
        System.out.println("调用ModuleB中的testB方法");
    }
}
复制代码
复制代码
public class ModuleC {
    //示意方法
    public void testC(){
        System.out.println("调用ModuleC中的testC方法");
    }
}
复制代码

  门面角色类:

复制代码
public class Facade {
    //示意方法,满足客户端需要的功能
    public void test(){
        ModuleA a = new ModuleA();
        a.testA();
        ModuleB b = new ModuleB();
        b.testB();
        ModuleC c = new ModuleC();
        c.testC();
    }
}
复制代码
五:装饰模式(DECORATOR)
装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。
使用Decorator的理由是:这些功能需要由用户动态决定加入的方式和时机.Decorator提供了"即插即用"的方法,在运行期间决定何时增加何种功能.
结构:
 
 
 
 
 
 
 
 
 
 
 
 
分享到:
评论

相关推荐

    C嵌入式编程设计模式

    而“C嵌入式编程设计模式”这一主题,旨在探讨如何利用C语言进行高效且可靠的嵌入式系统编程,通过采用经典的设计模式来提升代码的可读性、可维护性和可扩展性。以下将详细阐述相关知识点。 1. **状态机**:状态机...

    C嵌入式编程设计模式(pdf 压缩)

    《C嵌入式编程设计模式》是一本专为嵌入式系统开发者编写的书籍,它以C语言为基础,结合面向对象的思想,深入探讨了在有限资源的嵌入式环境中如何高效、灵活地进行软件设计。这本书的目标是帮助读者理解和应用一系列...

    22个编程设计模式详解

    本资源包“22个编程设计模式详解”包含了对这一主题的深入探讨。 设计模式分为三大类:创建型、结构型和行为型模式。创建型模式关注对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)和建造者...

    C嵌入式编程设计模式例程-2

    本资料“C嵌入式编程设计模式例程-2”聚焦于如何在嵌入式Linux环境中应用设计模式,以提高代码的可维护性、可读性和复用性。 在C语言中,由于缺乏类和对象等面向对象特性,设计模式的实现往往需要更多的技巧和创造...

    C嵌入式编程设计模式例程-1

    本例程“C嵌入式编程设计模式例程-1”聚焦于如何在资源受限的嵌入式环境中有效地应用设计模式。下面将详细介绍与这些标签相关的知识点。 首先,C语言是嵌入式系统中最常用的语言之一,其简洁、高效和低级别的特性使...

    蚂蚁架构师第3期并发编程设计模式分布式性能优化视频教程

    蚂蚁架构师之并发编程设计模式与分布式性能优化视频教程 java架构师视频教程推荐,真正的轻量级架构体系,学习java你不可或缺,java自学网作为国内顶尖的java学习论坛社区,专注提供高质量,含金量的视频教程!...

    c嵌入式设计模式

    本书《C嵌入式编程设计模式》由行业大师Bruce Powel Douglass撰写,系统性地介绍了在嵌入式系统设计中可采用的设计模式,尤其强调了如何使用C语言来实现这些设计模式,以创建高效、优化的设计。 书中首先介绍了...

    Android编程设计模式之模板方法模式详解

    本文实例讲述了Android编程设计模式之模板方法模式。分享给大家供大家参考,具体如下: 一、介绍 在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,...

    C嵌入式编程设计模式例程-3

    在C语言中进行嵌入式编程,设计模式的应用可以极大地提升代码的可读性、可维护性和可扩展性。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决问题的常见方法。本例程主要关注的是C语言在嵌入式系统...

    编程设计模式知识学习笔记

    编程设计模式知识学习笔记

    设计模式与范型编程

    设计模式与范型编程

    Java并发编程:设计原则与模式(第二版)

    Java并发编程:设计原则与模式(第二版).pdf

    Java 多线程编程中的设计模式~

    在Java多线程编程中,设计模式扮演着至关重要的角色,它们不仅提供了处理并发问题的通用解决方案,还帮助程序员构建出更加稳定、高效且可维护的多线程应用程序。以下是对标题“Java 多线程编程中的设计模式”以及...

    windows设计模式大全 能够让你编程更少一层楼

    在编程世界里,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于软件工程中,以提高代码的可读性、可维护性和可扩展性。本资源“Windows设计模式大全”专注于通过C++语言讲解这些模式,同时也涵盖了Delphi...

Global site tag (gtag.js) - Google Analytics