`

JAVA范例 八)面向对象---面向对象的设计模式、垃圾回收

 
阅读更多

      8.3 面向对象的设计模式

  实例156 Singleton单例模式

public class TestClass {							// 单例模式的测试类
	public static void main(String[] args) {
		Singleton object1 = Singleton.getSingleton(); 	// 调用方法获得实例
		Singleton object2 = Singleton.getSingleton(); 	// 调用方法获得实例
		System.out.println("用Singleton类实现单例模式的实例如下:");
		System.out.println("调用next()方法前:");
		System.out.println("object1.amount=" + object1.getAmount());
		System.out.println("object2.amount=" + object2.getAmount());
		object1.next(); 							// 调用方法
		System.out.println("\n调用next()方法后:");
		System.out.println("object1.amount=" + object1.getAmount());
		System.out.println("object2.amount=" + object2.getAmount());
	}
}
class Singleton {
	private static int amount = 5; 					// 私有属性
	private static Singleton singleton = new Singleton();// Singleton的唯一实例
	private Singleton() { // 创建private私有构造函数的目的为防止外界构造Singleton实例
	}
	public static Singleton getSingleton() { 			// 获取Singleton的实例
		return singleton;
	}
	public synchronized int getAmount() { 			// synchronized关键字表示方法是线程同步
		return amount; 						// 任一时刻最多只能有一个线程进入该方法
	}
	public synchronized void next() { 				// 将amount加1
		amount++;
	}
}

 

  实例157 招聘(简单工厂模式)

public class FactoryOne {
	public static void main(String[] args) {
		try {
			Person person = Recruitment.findWork("Middle_Programmer"); // 调用方法返回车的实例
			System.out.println("请各位谈谈自己的工作经历好吗?");
			person.experience(); 	// 调用方法开车
		} catch (Exception e) { 		// 捕获异常
			System.out.println("招聘的过程中出现了问题,停止招聘");
		} finally { 					// 代码总被执行
			System.out.println("......");
		}
	}
}
class Recruitment {
	public static Person findWork(String s) throws Exception {
		if (s.equalsIgnoreCase("Low_Programmer")) { // 判断传入参数返回不同的实现类
			return new Low_Programmer();
		} else if (s.equalsIgnoreCase("Middle_Programmer")) {
			return new Middle_Programmer();
		} else if (s.equalsIgnoreCase("High_Programmer")) {
			return new High_Programmer();
		} else {
			throw new Exception(); 		// 抛出异常
		}
	}
}
interface Person {
	public void experience();				// 工作经验
}
class Low_Programmer implements Person {	// 初级程序员
	public void experience() {
		System.out.println("我刚走出大学校门,目前只有不到一年的工作经验!!");
	}
}
class Middle_Programmer implements Person {// 中级程序员
	public void experience() {
		System.out.println("我已经毕业一年多了,目前有二年多的工作经验!");
	}
}
class High_Programmer implements Person {// 高级程序员
	public void experience() {
		System.out.println("我已经毕业很多年了,目前有五年多的工作经验!");
	}
}

 

  实例158 同学聚会(工厂方法模式)

package Chapter08;
public class FactoryTwo {
	public static void main(String[] args) { // java程序主入口处
		try {
			Forms form = new ShangHai();// 接口变量引用实现类对象
			MeetOfStudents mos = form.place(); // 调用方法返回聚会的实例
			System.out.println("今年咱们同学去哪聚会啊?");
			mos.form(); // 调用方法获得聚会的方式
		} catch (Exception e) { // 捕获异常
			System.out.println("今年的同学聚会取消?");
		} finally { // 代码总被执行
			System.out.println("......");
		}
	}
}
interface MeetOfStudents {// 聚会的形式
	public void form();
}
interface Forms {// 聚会的地方
	public MeetOfStudents place();
}
class Hotels implements MeetOfStudents {// 酒店
	public void form() {
		System.out.println("我们去酒店好好的吃一顿吧!");
	}
}
class Home implements MeetOfStudents {// 个人家里
	public void form() {
		System.out.println("我们还是去谁家好好的聊聊天,吃一顿便饭吧");
	}
}
class Nightclub implements MeetOfStudents {// 夜总会
	public void form() {
		System.out.println("我们还是去夜总会好好的High一次吧,放松一下心情");
	}
}
class QinHuangDao implements Forms {// 秦皇岛
	public MeetOfStudents place() {
		return new Hotels();
	}
}
class ShangHai implements Forms {// 上海
	public MeetOfStudents place() {
		return new Nightclub();
	}
}
class BeiJing implements Forms {// 北京
	public MeetOfStudents place() {
		return new Home();
	}
}

 

  实例159 图书展(抽象工厂模式)

public class FactoryThree {
	public static void main(String[] args) {
		PropertyOfBook garden = ShowBooks.getProperty("计算机型"); // 传入参数调用方法获得实例
		Book bookname = garden.getBookName();	// 获取书的名字
		Book author = garden.getAuthor();			// 获取书的作者
		Book price = garden.getPrice();				// 获取书的价格
		System.out.println("书的名字:" + bookname.getName());
		System.out.println("书的作者:" + author.getName());
		System.out.println("书的价格:" + price.getName());
	}
}
class Book { 					// 书类
	String name; 				// 书的名称
	public Book(String name) { 	// 带参数的构造方法
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
abstract class PropertyOfBook {			// 书的属性
	public abstract Book getAuthor(); 		// 作者
	public abstract Book getPrice();			// 价格
	public abstract Book getBookName(); 	// 书的名字
}
class Computer extends PropertyOfBook { 	// 计算机类的
	public Book getAuthor() {
		return new Book("张三");
	}
	public Book getBookName() {
		return new Book("Java Web实例大全");
	}
	public Book getPrice() {
		return new Book("88.00");
	}
}
class English extends PropertyOfBook 		// 英语类
{
	public Book getAuthor() {
		return new Book("张小红");
	}
	public Book getBookName() {
		return new Book("跟我学英语");
	}
	public Book getPrice() {
		return new Book("35.8");
	}
}
class Health extends PropertyOfBook	// 健康类
{
	public Book getAuthor() {
		return new Book("李四");
	}
	public Book getBookName() {
		return new Book("人类长寿的10个秘密");
	}
	public Book getPrice() {
		return new Book("66.9");
	}
}
class ShowBooks {					// 定义抽象工厂类
	private static PropertyOfBook po;
	public static PropertyOfBook getProperty(String type) {
		po = new Computer(); 		// 默认为计算机类
		if (type.equals("英语类"))
			po = new English();
		if (type.equals("健康类"))
			po = new Health();
		return po;
	}
}

 

  实例160 汽车适配器(Adapter适配器模式)

public class Adapter {
	
	public static void main(String[] args) {
		Honda honda = new Honda(); // 实例化对象
		honda.setColor("red"); // 设置位置
		honda.display(); // 显示颜色
		honda.move(); // 移动距离
		AudiAdapter audi = new AudiAdapter();// 实例化适配器
		audi.setColor("black"); // 设置位置
		audi.setSpeed(60);
		audi.display(); // 显示颜色
		audi.move(); // 移动距离
	}
}
interface Car { // 定义车接口
	public void setColor(String color); // 设置颜色
	public String getColor(); // 获得颜色
	public void setSpeed(int Speed); // 设置车速
	public int getSpeed(); // 获得车速
	public void move(); // 移动的距离
	public void display(); // 显示车的颜色
}
class Honda implements Car { // 定义一个继承了car接口的轿车本田
	String color;
	int speed;
	public void setColor(String color) {
		this.color = color;
	}
	public String getColor() {
		return this.color;
	}
	public int getSpeed() {
		return this.speed;
	}
	public void setSpeed(int speed) {
		this.speed = speed;
	}
	public void move() {
		System.out.println("本田车已经移动到:" + 3 * speed);
	}
	public void display() {
		System.out.println("本田车的颜色为:" + color);
	}
}
class Audi { // 定义一个奥迪车,没有实现Car接口
	String color;
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public void display() {
		System.out.println("奥迪车的颜色为:" + color);
	}
}
class AudiAdapter implements Car {
	private Audi audi;
	private int speed;
	public AudiAdapter() {
		audi = new Audi();
	}
	public void display() {
		audi.display();
	}
	public String getColor() {
		return audi.getColor();
	}
	public void setColor(String color) {
		audi.setColor(color);
	}
	// 为奥迪车扩展Move()和setSpeed以及getSpeed的方法
	public int getSpeed() {
		return speed;
	}
	public void move() {
		System.out.println("奥迪车已经移动到:" + 3 * speed);
	}
	public void setSpeed(int speed) {
		this.speed = speed;
	}
}

 

  8.4 垃圾回收

  实例161 垃圾回收的机制

public class GarbageCollector {
	static int count;
	int index;
	GarbageCollector() {
		count++;
		System.out.println("object " + count + " is constracted");
		setid(count);
	}
	void setid(int id) {
		index = id;
	}
	protected void finalize(int count) {
		System.out.println("object " + index
				+ " is GarbageCollectord collection");
	}
	public static void main(String args[]) {
		new GarbageCollector();
		new GarbageCollector();
		new GarbageCollector();
		new GarbageCollector();
		new GarbageCollector();
		System.gc();
	}
}

 

分享到:
评论

相关推荐

    Java2范例入门与提高(源码)

    8. **Chap08** - 进阶话题:这部分可能包含反射、注解、JNI(Java Native Interface)、JVM内存管理、垃圾回收机制,甚至是设计模式等进阶主题。 9. **使用说明.txt** - 这个文件很可能是对整个压缩包的使用指南,...

    Java2范例入门与提高PDG格式

    首先,Java2的核心概念包括面向对象编程(OOP)原则,如封装、继承和多态。在入门阶段,理解这些概念至关重要,因为它们构成了Java语言的基础。封装是隐藏对象的内部细节,只暴露必要的接口;继承允许一个类(子类)...

    Java编程模式与范例:基础开发技巧!

    1. **面向对象编程**:Java是一种纯面向对象的语言,它强调类的封装、继承和多态性。理解这些概念对于编写清晰、可扩展的代码至关重要。类是对象的蓝图,继承允许创建新的类并重用已存在的代码,而多态则使程序具有...

    java范例开发大全(pdf&源码)

    8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器(Adapter适配器模式...

    Java综合各种开发技术(各类笔记,范例)

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而闻名。"Java综合各种开发技术(各类笔记,范例)"是一份非常全面的学习资源,旨在帮助开发者深入理解和掌握Java的各项核心技术和高级特性...

    Java2范例入门与提高

    2. **类与对象**:Java是一种面向对象的编程语言,理解类的定义、对象的创建以及封装、继承、多态三大特性至关重要。 3. **数组与集合**:数组是存储固定数量同类型数据的结构,而集合(如ArrayList、LinkedList、...

    java通用范例开发金典程序源代码(1).tar.gz

    例如,你可以研究如何使用面向对象设计模式,如何处理并发问题,或者学习如何利用Java集合框架高效地处理数据。此外,通过查看作者如何组织和设计代码,还可以了解到良好的编程规范和最佳实践。 总而言之,《Java...

    java范例开发大全源代码

     8.3 面向对象的设计模式 241  实例156 Singleton单例模式 242  实例157 招聘(简单工厂模式) 243  实例158 同学聚会(工厂方法模式) 244  实例159 图书展(抽象工厂模式) 246  实例160 汽车...

    java范例开发大全

    8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器(Adapter适配器模式...

    Java范例开发大全 (源程序)

     8.3 面向对象的设计模式 241  实例156 Singleton单例模式 242  实例157 招聘(简单工厂模式) 243  实例158 同学聚会(工厂方法模式) 244  实例159 图书展(抽象工厂模式) 246  实例160 汽车适配器...

    Java范例开发大全(全书源程序)

    8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器(Adapter...

    Java2范例入门与提高光盘.

    2. **面向对象**:理解类、对象、封装、继承和多态等面向对象编程的核心概念。掌握如何创建类,定义属性和方法,以及如何通过对象进行操作。 3. **异常处理**:学习如何使用try-catch语句捕获和处理程序运行时可能...

    Modern Compiler Implementation in Java, 2nd Edition

    新版教材进行了广泛的重写,增加了更多关于Java和面向对象编程概念的讨论,例如访问者模式,并且包含了一个全新设计的编译器项目,该项目是针对Java的一个子集来实现的,包括前端和后端阶段,使得学生能在一学期内...

    java面试题源码范例和详细说明(由浅入深,深度解读在资料后半部分)(合集).docx

    更深入的 Java 面试题可能涉及到多线程、集合框架、异常处理、IO 流、反射、设计模式、JVM 内存模型、并发编程、垃圾回收机制、数据库连接池等。在面试中,面试官通常会根据候选人的经验和技能水平提出不同难度的...

    c#程序开发范例宝典 源码

    C#是微软公司推出的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,它吸收了C++和Java等语言的优点,并引入了许多创新特性,如类型安全、垃圾回收、自动内存管理、异常处理等。在C#中,你可以创建...

    C#经典范例50讲讲解了许多c#常用的例子

    C#是由微软公司为.NET框架开发的一种面向对象的编程语言,设计时考虑了现代软件开发的需求,包括类型安全、垃圾回收、异常处理和面向接口的编程。C#语言的语法与C++和Java有很多相似之处,但它更注重简洁和安全性。 ...

    C#经典范例(50讲)

    C#的基本语法结构与C++和Java相似,但引入了许多现代编程语言的特性,如自动垃圾回收、匿名方法、LINQ等。 在C#经典范例50讲中,我们可能会看到以下几个方面的内容: 1. **基础语法**:包括变量声明、数据类型(如...

    C#5.0语法范例,语法讲解详细,还有配套例程

    C# 支持多种编程模式,如面向对象编程、泛型编程和函数式编程,并且不断引入新特性以适应现代软件开发的需求。 - **类型安全性**:C# 强制进行类型检查,有助于减少运行时错误。 - **垃圾回收机制**:自动管理内存...

    frame-project-interview-master.zip

    8. **编程语言特性**:针对特定语言(如Java、Python、C++等)的特性,如异常处理、垃圾回收、类型系统等。 9. **前端技术**:HTML、CSS、JavaScript基础知识,以及React、Vue、Angular等前端框架的使用。 10. **...

    大数据应用程序设计Design for Big Data Applications

    研究者实施了几个常用的数据处理任务,并采用传统面向对象设计方法与新设计范式进行了比较。实验结果表明,新设计范式在性能提升方面极为有效,即使是对于中等大小的数据集处理,也观察到了2.5倍以上的性能提升,...

Global site tag (gtag.js) - Google Analytics