转自: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语言进行高效且可靠的嵌入式系统编程,通过采用经典的设计模式来提升代码的可读性、可维护性和可扩展性。以下将详细阐述相关知识点。 1. **状态机**:状态机...
《C嵌入式编程设计模式》是一本专为嵌入式系统开发者编写的书籍,它以C语言为基础,结合面向对象的思想,深入探讨了在有限资源的嵌入式环境中如何高效、灵活地进行软件设计。这本书的目标是帮助读者理解和应用一系列...
本资源包“22个编程设计模式详解”包含了对这一主题的深入探讨。 设计模式分为三大类:创建型、结构型和行为型模式。创建型模式关注对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)和建造者...
本资料“C嵌入式编程设计模式例程-2”聚焦于如何在嵌入式Linux环境中应用设计模式,以提高代码的可维护性、可读性和复用性。 在C语言中,由于缺乏类和对象等面向对象特性,设计模式的实现往往需要更多的技巧和创造...
本例程“C嵌入式编程设计模式例程-1”聚焦于如何在资源受限的嵌入式环境中有效地应用设计模式。下面将详细介绍与这些标签相关的知识点。 首先,C语言是嵌入式系统中最常用的语言之一,其简洁、高效和低级别的特性使...
蚂蚁架构师之并发编程设计模式与分布式性能优化视频教程 java架构师视频教程推荐,真正的轻量级架构体系,学习java你不可或缺,java自学网作为国内顶尖的java学习论坛社区,专注提供高质量,含金量的视频教程!...
本书《C嵌入式编程设计模式》由行业大师Bruce Powel Douglass撰写,系统性地介绍了在嵌入式系统设计中可采用的设计模式,尤其强调了如何使用C语言来实现这些设计模式,以创建高效、优化的设计。 书中首先介绍了...
本文实例讲述了Android编程设计模式之模板方法模式。分享给大家供大家参考,具体如下: 一、介绍 在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,...
在C语言中进行嵌入式编程,设计模式的应用可以极大地提升代码的可读性、可维护性和可扩展性。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决问题的常见方法。本例程主要关注的是C语言在嵌入式系统...
编程设计模式知识学习笔记
设计模式与范型编程
Java并发编程:设计原则与模式(第二版).pdf
在Java多线程编程中,设计模式扮演着至关重要的角色,它们不仅提供了处理并发问题的通用解决方案,还帮助程序员构建出更加稳定、高效且可维护的多线程应用程序。以下是对标题“Java 多线程编程中的设计模式”以及...
在编程世界里,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于软件工程中,以提高代码的可读性、可维护性和可扩展性。本资源“Windows设计模式大全”专注于通过C++语言讲解这些模式,同时也涵盖了Delphi...