`
ponlya
  • 浏览: 166581 次
  • 性别: 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框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...

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

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

    JAVA-设计模式-创建型模式-工厂模式

    JAVA-设计模式-创建型模式-工厂模式

    JAVA-设计模式-结构型模式-组合模式

    JAVA-设计模式-结构型模式-组合模式

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

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

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

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

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

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

    设计模式复习题.doc

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

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

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

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

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

    设计模式-C++

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

    软件设计模式--填空题+简答题(复习7).rar

    设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代器、访问者、备忘录、...

    软件设计模式-工厂模式

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

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

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

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

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

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    本章节通过一个具体的案例——文档编辑器的设计,展示了如何运用设计模式来解决实际项目中的设计问题,包括但不限于: - **文档结构设计**:考虑文档的层次结构和组织方式。 - **格式化处理**:实现文本格式化的功能...

    java常用设计模式-工厂模式的实现.doc

    java常用设计模式-工厂模式的实现.doc

    23种 设计模式---面向对象的基本原则

    设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,为软件开发提供了可复用的解决方案。在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计...

    设计模式概述,讲述什么是设计模式的ppt - 简单工厂模式

    ### 设计模式概述——简单工厂模式详解 #### 一、设计模式概览 设计模式是在软件工程领域中,为了解决特定问题而总结出来的一系列经验法则和最佳实践。通过运用设计模式,开发者可以在面对常见问题时,快速找到...

Global site tag (gtag.js) - Google Analytics