单例模式 简单工厂模式

原创 2015年07月10日 20:55:27
设计模式:解决固定问题的固定办法

单例设计模式:对外只能得到一个对象的模式

单例设计模式的实现有两种:
  1:懒汉式

class Person{
	private static  Person instance;

	private Person(){
		System.out.println("===private Person()====");
	}

	public static Person getInstance(){
		if(instance==null){
			instance=new Person();
		}

		return instance;
	}

}

            1,声明一个私有的静态的本类类型的对象;
            2,将构造函数私有化
            3,提供一个静态的公有的本类类型方法返回本类类型的对象,对1中的对象进行判断,判断值是否为空,若为空则通过new class 创建,否直接返回声明的对象;

           

  2,:饿汉式

          

class Person{
	private static final Person instance=new Person();

	private Person(){
		System.out.println("===private Person()====");
	}

	public static Person getInstance(){
		return instance;
	}


           1,声明一个私有的静态的,最终的本类类型的对象,并实例化
           2,构造函数私有化
           3,提供一个共有的静态的本类类型的方法返回本类类型的对象


 工厂设计模式:
提供批量的实例化对象的功能,且工厂中的方法都是公共的静态的返回接口类型的方法

 

interface Animal{
	void eat();
	void sleep();
	void move();
}

class Dog implements Animal{
	public void eat(){
		System.out.println("狗吃");
	}
	public void sleep(){
		System.out.println("狗睡");
	}

	public void move(){
		System.out.println("狗动");
	}

	public void lookHouse(){
		System.out.println("狗看门");
	}
}

class Wolf implements Animal{
	public void eat(){
		System.out.println("狼吃");
	}
	public void sleep(){
		System.out.println("狼睡");
	}

	public void move(){
		System.out.println("狼动");
	}

	public void shout(){
		System.out.println("狼嗷嗷叫");
	}
}

/**
  * 工厂类的主要职责:生产对象
*/
class SimpleFactory{
	/**
	  * 工厂中的方法都是公共的静态的返回接口类型的方法
	*/
	public static Animal getInstance(String type){
		if("dog".equals(type)){
			return new Dog();
		}else if("wolf".equals(type)){
			return new Wolf();
		}else {
			System.out.println("无效的类型");
			return null;
		}
	}




	static void print(Animal al){
		if(al!=null){
			al.eat();
			al.sleep();
			al.move();

			if(al instanceof Dog){
				Dog dog=(Dog)al;
				dog.lookHouse();
			}else if(al instanceof Wolf){   //判断是否是由子类上转型转换过来的
				Wolf wolf=(Wolf)al;     //下转型转换为子类对象,调用子类新的方法
				wolf.shout();
			}
		}
		
	}


	static void exe(){
		Animal dog=SimpleFactory.getInstance("dog");
		Animal wolf=SimpleFactory.getInstance("wolf");

		Animal al=SimpleFactory.getInstance("fox");


		SimpleFactory.print(dog);
		SimpleFactory.print(wolf);
		SimpleFactory.print(al);
	}

}

public class TestSimpleFactoryDemo08{
	public static void main(String[] args){
		/*Animal dog=new Dog();
		dog.eat();
		dog.sleep();
		dog.move();

		Animal wolf=new Wolf();
		wolf.eat();
		wolf.sleep();
		wolf.move();*/

		/*
		Animal dog=new Dog();
		Animal wolf=new Wolf();

		print(dog);
		print(wolf);
		*/

		
		SimpleFactory.exe();   //全部

	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

简单工厂模式&&单例模式

简单工厂模式 使用一个单独的类来做跟这个创造实例的过程 单例模式 所有类都有构造方法,不编码则系统默认生成空的构造方法,若显示定义的构造方法,默认构造器会失效 单利模式  保证一...

黑马程序员——简单工厂模式和单例模式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------   先说简单工厂模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模...
  • Camwly
  • Camwly
  • 2015年11月26日 11:03
  • 311

Java中单例模式与简单工厂模式的简单实例介绍

1:单例设计模式       单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式又包含 饿汉...

浅谈常见设计模式--单例模式 简单工厂模式

今题那站在这里和大家一起分享最近在一本书上看到的关于设计模式的内容,接下来要讲的设计模式有: 单例模式 简单工厂模式 工厂方法和抽象工厂 代理模式 命令模式 策略模式 门面模式 桥接模式 观察者模式 ...

简单工厂模式、单例模式以及MVC模式

本文是对简单工厂模式、单例模式、以及MVC模式的简单介绍。至于你问,为什么把这三种模式放在一起讲,笔者目前也很懵逼,因为这是一个作业...好了,言归正传。一、简单工厂模式(Simple Factory...
  • Yarn_
  • Yarn_
  • 2017年03月16日 12:54
  • 1236

简单工厂模式的简例

  • 2008年07月26日 00:24
  • 744KB
  • 下载

简单工厂模式

  • 2017年08月16日 20:07
  • 60.84MB
  • 下载

设计模式之简单工厂模式(以计算器为例)

在了解简单工厂模式之前,首先先来做个小题目:用面向对象语言模拟实现一个简单的计算器,在控制台输入数字A、运算符、数字B,然后在控制台输出相对应的结果。因为我主攻的是java,所以我会选择用java语言...

简单工厂模式的C++、Java实现

  • 2017年02月04日 18:05
  • 21.84MB
  • 下载

Calculator(简单工厂模式)

  • 2014年04月04日 12:37
  • 550KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单例模式 简单工厂模式
举报原因:
原因补充:

(最多只允许输入30个字)