当前位置: 首页 > news >正文

Java装配模式

 

public class BeautifulAppearance implements IAppearance {
	@Override
	public String appearance() {
		return "外形美观";
	}
}
public class MediumPrice implements IPrice {
	@Override
	public String price() {
		return "价格中等";
	}
}
public class TouchScreen implements IScreen {
	@Override
	public String screen() {
		return "不可触屏";
	}
}
public class QuickSpeed implements ISpeed {
	@Override
	public String speed() {
		return "运行速度快";
	}
}
public class Phone {
	private String name;
	private IAppearance appearance;
	private IPrice price;
	private ISpeed speed;
	private IScreen screen;
	
	public Phone() {
		this("无名");
	}
	
	public Phone(String name) {
		this.name = name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setAppearance(IAppearance appearance) {
		this.appearance = appearance;
	}

	public void setPrice(IPrice price) {
		this.price = price;
	}

	public void setSpeed(ISpeed speed) {
		this.speed = speed;
	}

	public void setScreen(IScreen screen) {
		this.screen = screen;
	}

	@Override
	public String toString() {
		return this.name + "是一款" + this.appearance.appearance() + ","
			+ this.price.price() + "," + this.speed.speed() + "," + this.screen.screen() + "的手机";
	}
}
public interface IAppearance {
	String appearance();
}
public interface IPrice {
	String price();
}
public interface IScreen {
	String screen();
}
public interface ISpeed {
	String speed();
}
public class Test {

	public static void main(String[] args) {
		Phone huaWei = new Phone("华为");
		huaWei.setAppearance(new BeautifulAppearance());
		huaWei.setPrice(new MediumPrice());
		huaWei.setSpeed(new QuickSpeed());
		huaWei.setScreen(new IScreen() {
			@Override
			public String screen() {
				return "可触屏";
			}
		});
		System.out.println(huaWei);
		
		Phone NOKIA = new Phone();
		NOKIA.setName("诺基亚");
		NOKIA.setAppearance(new IAppearance() {
			@Override
			public String appearance() {
				return "外壳坚硬";
			}
		});
		NOKIA.setPrice(new IPrice() {
			@Override
			public String price() {
				return "价格低廉";
			}
		});
		NOKIA.setSpeed(new ISpeed() {
			@Override
			public String speed() {
				return "速度飞快";
			}
		});
		NOKIA.setScreen(new TouchScreen());
		System.out.println(NOKIA);
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • 归并排序(递归实现)
  • 归并排序(非递归)
  • Java中final、finally和finalize的区别
  • 归并排序(自然分组)
  • STM32概述
  • 软件工程学科的诞生
  • 软件开发过程模型综述
  • 算法设计题--数组元素换位
  • 数组换位问题-比较容易理解的解法
  • C语言形参与实参的复习
  • MySQL入门学习总结
  • 计算机存储体系简介
  • Linux基本命令个人总结
  • Makefile的简单写法总结
  • 不带头节点链表--用面向对象的思想实现
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • echarts花样作死的坑
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java的Interrupt与线程中断
  • Spring Boot快速入门(一):Hello Spring Boot
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • Wamp集成环境 添加PHP的新版本
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 后端_ThinkPHP5
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 解决iview多表头动态更改列元素发生的错误
  • 解析 Webpack中import、require、按需加载的执行过程
  • 浅谈Golang中select的用法
  • 设计模式 开闭原则
  • 找一份好的前端工作,起点很重要
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • %@ page import=%的用法
  • (8)STL算法之替换
  • (C++20) consteval立即函数
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (搬运以学习)flask 上下文的实现
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (蓝桥杯每日一题)love
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)原始图像数据和PDF中的图像数据
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net FrameWork总结
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net 流——流的类型体系简单介绍
  • .NET开发者必备的11款免费工具
  • .Net小白的大学四年,内含面经
  • .vue文件怎么使用_我在项目中是这样配置Vue的