23种设计模式uml图及java简单实现代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

23种经典设计模式UML类图汇总关键字: 设计模式

23种设计模式JAVA代码实现和追mm和设计模式关键字: 23种设计模式java代码实现追mm和设计模式

最讨厌废话了,把代码贴出来最简单。

package lq.test;

import java.io.*;

import java.util.*;

//*********创建型模式***************

//factory method 1

//1具体的构造算法,和2构造出的具体产品由子类实现

interface Product {

}

//或者我也提供一个工厂的接口,由这个抽象类来继承它

abstract class Factory {

abstract public Product fmd();

//我认为这个方方法的存在是,是对FactoryMethod方法的补充

//例如可以为生成的对象赋值,计算为生成对象应付何值,前后的日值

//且这些都是公用的,生成产品的最主要算法还是在FactoryMethod中,

//这个方法只是起辅助作用,这也是一种思维方法,将具体的算法实现在一个方法中

//而我不直接调用此方法,而使用另外的一个方法封装它,等到了更灵活的效果,而

//子类需实现的内容是FactoryMethod

//此方法是一个TemplateMethod

public Product creat() {

Product pd = null;

System.out.println("before operation");

pd = fmd();

System.out.println("end operation");

return pd;

}

}

class Product1 implements Product {

}

class Factory1 extends Factory {

public Product fmd() {

Product pd = new Product1();

return pd;

}

}

//FactroyMethod 2

//这种方式简单实用

interface Producta {

}

interface Factorya {

Producta create();

}

class Producta1 implements Producta {}

class Factorya1 implements Factorya {

public Producta create() {

Producta pda = null;

pda = new Producta1();

return pda;

}

}

//AbstractFactory

//AbstractFactory与FactoryMethod的不同在于AbstractFactory创建多个产品

//感觉此模式没有什么大用

//当然可以还有更多的接口

interface Apda {}

interface Apdb {}

interface Afactory {

Apda createA();

Apdb createB();

}

class Apda1 implements Apda {}

class Apdb1 implements Apdb {}

//有几个接口就有几个对应的方法

class Afactory1 implements Afactory {

public Apda createA() {

Apda apda = null;

apda = new Apda1();

return apda;

}

public Apdb createB() {

Apdb apdb = null;

apdb = new Apdb1();

return apdb;

}

}

//Builder

//一个产品的生成分为生成部件和组装部件,不同的产品每个部件生成的方式不同

//而组装的方式相同,部件的生成抽象成接口方法,而组装的方法使用一个TemplateMethod方法

interface Cpda {}

class Cpda1 implements Cpda {}

interface BuilderI {

void buildPart1();

void buildPart2();

void initPd();

Cpda getPd();

}

abstract class BuilderA implements BuilderI {

Cpda cpda;

public Cpda getPd() {

initPd();

//对对象的内容进行设置

buildPart1();

buildPart2();

return cpda;

}

}

class Builder extends BuilderA {

public void buildPart1() {

System.out.println(cpda);

}

public void buildPart2() {

System.out.println(cpda);

}

public void initPd() {

cpda = new Cpda1();

}

}

//一个简单的生成产品的实现

//1

abstract class Fy {

public abstract void med1();

static class Fy1 extends Fy {

public void med1() {

}

}

public static Fy getInstance() {

Fy fy = new Fy1();

return fy;

// Fy fy = new Fy1() {//这种匿名内部类是静态的!!

// public void med1() {

// }

// };

// return fy;

}

}

//2

interface Pdd {}

相关文档
最新文档