`

设计模式二

 
阅读更多
把state当成产品来生产,应用工厂模式
package com;

public class StateTest{
	public static void  main(String[] args) {
		Man m = new Man();
		m.request();
		
		m.setState(StateFactory.getState("adult"));
		m.request();
	}
}

abstract class State{
	private String s;
	abstract public void handle(Man m);
	
	public String getS() {
		return s;
	}
	public void setS(String s) {
		this.s = s;
	}
}

class BabyState extends State{
	public BabyState() {
		// TODO Auto-generated constructor stub
		this.setS("Baby");
	}
	@Override
	public void handle(Man m) {
		// TODO Auto-generated method stub
		System.out.println("i am Baby");
		System.out.println("i will drink milk");
	}
}

class ChildrenState extends State{
	public ChildrenState() {
		// TODO Auto-generated constructor stub
		this.setS("children");
	}

	@Override
	public void handle(Man m) {
		// TODO Auto-generated method stub
		System.out.println("i am children");
		System.out.println("i will go to school");
	}
	
}

class AdultState extends State{
	public AdultState() {
		// TODO Auto-generated constructor stub
		this.setS("adult");
	}
	@Override
	public void handle(Man m) {
		// TODO Auto-generated method stub
		System.out.println("i am adult");
		System.out.println("i will marry");
		System.out.println("i will make out my baby");
	}
	
}

class OldState extends State{
	public OldState() {
		// TODO Auto-generated constructor stub
		this.setS("old");
	}
	@Override
	public void handle(Man m) {
		// TODO Auto-generated method stub
		System.out.println("i am old");
		System.out.println("i will Retirement");
	}
}

class Man{
	private State s;
	public Man() {
		// TODO Auto-generated constructor stub
		this.s = new BabyState(); 
	}
	public void request(){
		s.handle(this);
	}
	
	public void setState(State s){
		this.s = s;
	}
}


class StateFactory{
	public static State getState(String type){
		switch (type) {
		case "baby":
			return new BabyState();
		case "children":
			return new ChildrenState();
		case "adult":
			return new AdultState();
		case "old":
			return new OldState();
		default:
			break;
		}
		return null;
		
	}
}



分享到:
评论

相关推荐

    C#设计模式2

    C#设计模式2,请将两个文件下载至同一文件夹后解压

    Head First 设计模式 +Java设计模式(第2版)

    《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...

    新版设计模式手册 - C#设计模式(第二版)

    《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...

    Java设计模式2

    在《Java设计模式2》这本书中,作者通过丰富的案例和深入浅出的讲解,为读者提供了理解和运用设计模式的全面指南。 #### 二、面向对象设计原则 面向对象设计(OOD)的原则是设计模式的基础。书中详细介绍了一系列...

    二十三种设计模式资源下载

    二十三种设计模式二十三种设计模式二十三种设计模式

    python设计模式第2版.pdf

    Python设计模式(第2版)通过11章内容,全面揭示有关设计模式的内容,并结合Python语言进行示例化的解析。全书囊括单例设计模式、工厂模式、门面模式、代理模式、观察者模式、命令模式、模板方法模式、复合模式、状态...

    24种设计模式以及混合设计模式

    设计模式是软件工程中的一种重要思想,它是在特定情境下,为解决常见问题而形成的一套最佳实践。在本文中,我们将深入探讨24种设计模式,并结合混合设计模式的概念,以及它们在实际项目中的应用案例。 首先,设计...

    head first 设计模式 高清中文版 pdf 第二部分

    head first 设计模式 高清中文版 pdf

    大话设计模式-完整设计模式介绍

    大话设计模式 完整设计模式介绍

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    软件体系结构实验报告--设计模式2

    在软件开发领域,设计模式是经验丰富的开发者们总结出的解决常见问题的可复用解决方案。本实验报告主要探讨了五个关键的设计模式:组合模式、外观模式、代理模式、观察者模式以及策略模式,这些都是软件体系结构中的...

    Java设计模式 设计模式介绍

    章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之...

    设计模式之蝉

    在计算机科学领域,设计模式是软件工程中用于解决特定问题的一般性方案,它们是经过实践检验的最佳实践。这些模式被广泛应用于面向对象软件设计中,能够提高代码的可重用性、灵活性和可维护性。设计模式通常被划分为...

    研磨设计模式2

    研磨设计模式2

    设计模式——刘伟

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。刘伟先生在讲解设计模式时,通常会深入浅出地介绍这些模式的原理、应用场景以及如何有效地在实际编程中应用它们。设计模式并不是...

    设计模式 GOF 23

    1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象...

    设计模式解析第二版PDF-2

    设计模式解析,和大家一起学习。里面有常用的设计模式

    深入浅出设计模式2.rar中文版

    2. **工厂模式**:这是最基础的设计模式之一,用于抽象实例化过程,使得客户端无需关注具体对象的创建细节,提高代码的灵活性和可扩展性。工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式。 3. **单例模式**...

    First设计模式2.part2

    First设计模式2.part2

    软件设计模式大作业

    二、 设计模式应用 1. 简单工厂模式 简单工厂模式用于实现蛋糕订购系统的工厂类,负责创建不同的蛋糕对象。 2. 工厂方法模式 工厂方法模式用于实现蛋糕订购系统的工厂接口和工厂实现类,负责创建不同的蛋糕对象...

Global site tag (gtag.js) - Google Analytics