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

设计模式-众多工厂-生成器-命令-模板 -组合

 
阅读更多

什么GOF或者这书那书上有很多提到工厂的,简单工厂,工厂方法,抽象工厂,太多了。

工厂  总结一下,工厂,字面上就是根据需要不停生产东东的。

简单工厂就是选择实现,工厂方法说是可以将实现延迟到子类(抽象类实现 定义需要覆写的方法)实现,而抽象工厂则是用接口进行一步抽象实现,从而实现更高层次的隔离。

public static Api createApi(int i){
	if(i == 1){
		return  new ImplA();
	}
	return new ImplB();
}

 

生成器

分离事件构建算法和部件构造。

咋一看很像工厂+外观,将实现封装一下,通过传入相应的参数选择性实现内部细节。但是,这种模式还是有其优雅的一面。它分离了整体构建算法和部件构造。这里的部件说白了就是上面工厂中选择实现的条件i.只不过是一个对象,而且对象内部包含一些数据罢了。如果能将部件的构造与构建算法完成隔离还是不错的,即,再新创建一个部件,可以用其中的算法来执行结果。

TxtBuilder tb = new TxtBuilder(); //构造部件,这里是生成txt,还可以是doc....
Director d = new Director(tb);//算法,执行部分。

//构建算法接口
public interface Builder {

	public void builderHeader(List<String[]> list);
	
	public void buildBody(List<String[]> list);
	
	public void buildFooter(List<String[]> list);
	
}

 命令模式

一直认为它是外观的一种延伸,如果能将这些做到可撤销操作,则这就是它的一个亮点。封装请求,参数化配置,可撤销回滚。

命令模式样式很简单,就是后面会有调用A完成某功能,调用B完成某功能…………

 

模板方法

定义一个操作中的固定的算法骨架,而将一些步骤延迟到子类完成,使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。避免重复代码及增加可扩展性。如下的getpass方法就类似于集合类中的comparator排序一样。

public abstract class LoginTemplate
{

	public  boolean login(String user,String pass)
	{
		if(pass.equals(getPass(user)))
			return true;
		return false;
	}
	
	public abstract String getPass(String user);
	
}

 

public class UserLogin extends LoginTemplate
{

	@Override
	public String getPass(String user)
	{
		return user+"password";
	}

}

 与

public class IdLogin extends LoginTemplate
{

	@Override
	public String getPass(String id)
	{
		// TODO 通过Id取密码
		return null;
	}

}

 根据不同的情况选择不同的实现。

组合

统一叶子对象与组合对象的访问等操作方式。将对象的部分-整体层次结构的操作统一起来,使结构更简单。简单了客户端的调用。是否JMX中的composite即是这种的体现??避免环状引用。

Composite c1 = new Object();

Composite c2 = new Object();

c1.add(new Object());

c2.add(c1);

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    java设计模式----抽象工厂模式

    java设计模式----抽象工厂模式,简单工厂模式代码 代码内部

    C++设计模式--基于Qt4开源跨平台开发框架

    《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...

    c++设计模式-结构型模式-组合模式

    c++设计模式-结构型模式-组合模式;qt工程;c++简单源码; 组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系...

    JAVA-设计模式-行为型模式-模板方法模式

    JAVA-设计模式-行为型模式-模板方法模式

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    iOS设计模式-生成器

    生成器(Builder)设计模式是设计模式中的一种,它将对象的创建过程抽象化,使得同样的创建过程可以创建不同的表示。通过这种方式,生成器模式允许我们分离产品的构造和表示,提供了更灵活的构造过程。 首先,让...

    JAVA-设计模式-行为型模式-命令模式

    JAVA-设计模式-行为型模式-命令模式

    设计模式UML图--工厂模式

    在给定的“设计模式UML图--工厂模式”中,我们关注的是三种不同的工厂模式:简单工厂、工厂方法和抽象工厂。这些模式都是创建型设计模式,它们的核心目标是为对象的创建提供一种抽象,使得客户端代码不必关心具体的...

    设计模式专题之(三)抽象工厂模式---设计模式抽象工厂模式示例代码(python--c++)

    设计模式专题之(三)抽象工厂模式---设计模式抽象工厂模式示例代码(python--c++)

    设计模式复习题.doc

    "设计模式复习题.doc" 以下是根据给定文件生成的相关...以上是根据给定文件生成的相关知识点,涵盖了设计模式的种类、基本要素、应用场景、设计原则、实现方式、优点、应用领域、设计模式、常见问题和学习方法等方面。

    c++设计模式-行为型模式-模板方法模式

    c++设计模式-行为型模式-模板方法模式;qt工程;c++简单源码; 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重...

    一例读懂设计模式-单例模式、简单工厂模式.zip

    本资源“一例读懂设计模式-单例模式、简单工厂模式.zip”旨在帮助初学者通过实例深入理解这两种重要设计模式:单例模式和简单工厂模式。以下是关于这两个模式的详细讲解。 1. **单例模式**: 单例模式是一种限制类...

    C#设计模式-工厂模式系列

    C#设计模式-工厂模式系列

    设计模式-C++

    创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    软件设计模式与体系结构(讲解+代码)

     【例2.5】生成器模式-房屋信息  【例2.6】单例模式-互联网连接  【例3.2】组合模式-五子棋代码  【例3.3】组合模式-空军指挥系统  【例3.4】组合模式-世界问候语  【例3.7】类适配器模式-客户信息验证 ...

    软件设计模式-工厂模式

    该资源详细介绍了工厂模式

    设计模式--可复用面向对象软件的基础

    - **第五章 行为模式**:包括职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法以及访问者等模式,这些模式主要关注于类和对象的责任分配,帮助实现更灵活的行为设计。 - **第六章 结论*...

    c++设计模式-行为型模式-命令模式

    c++设计模式-行为型模式-命令模式;qt工程 ;c++简单源码; 命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将...

    23种设计模式详解PDF

    设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): ...策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    设计模式-组合模式-示例代码

    设计模式中的组合模式的示例代码。 包括透明写法和安全写法两种实现方式的示例。

Global site tag (gtag.js) - Google Analytics