1、有一批电脑,电脑有三种品牌,每个品牌都是组装机,都会用到显卡\内存\cpu,这些显卡\内存\cpu又有不同品牌的厂家生产,请组装出惠普、联想、苹果这三台电脑
简单实现(设计思路)
/**
* 电脑抽象类
*/
abstract class AComputer {
IMemery memery;
IGraphicsCard graphicsCard;
ICpu cpu;
abstract void setComponent(IMemery memery,IGraphicsCard graphicsCard,ICpu cpu);
void comRun() { //模块方法
memery.run();
graphicsCard.run();
cpu.run();
}
}
class Hp extends AComputer{ //惠普电脑
@Override
void setComponent(IMemery memery, IGraphicsCard graphicsCard, ICpu cpu) {
this.cpu = cpu;
this.graphicsCard = graphicsCard;
this.memery = memery;
}
}
class Apple extends AComputer{ //苹果电脑
@Override
void setComponent(IMemery memery, IGraphicsCard graphicsCard, ICpu cpu) {
this.cpu = cpu;
this.graphicsCard = graphicsCard;
this.memery = memery;
}
}
class Lenovo extends AComputer{ //联想电脑
@Override
void setComponent(IMemery memery, IGraphicsCard graphicsCard, ICpu cpu) {
this.cpu = cpu;
this.graphicsCard = graphicsCard;
this.memery = memery;
}
}
定义的接口
public interface ICpu { //cpu接口
void run();
}
public interface IGraphicsCard { //显卡接口
void run();
}
public interface IMemery {//内存接口
void run();
}
内存接口实现类
public class KingMemImp implements IMemery {
@Override
public void run() {
System.out.println("金士顿内存");
}
}
class WGMMemImp implements IMemery {
@Override
public void run() {
System.out.println("WGM内存");
}
}
cpu接口实现类
public class InterCpuImp implements ICpu {
@Override
public void run() {
System.out.println("InterCPU");
}
}
class AMDCpuImp implements ICpu {
@Override
public void run() {
System.out.println("AMDCPU");
}
}
class AppleCpuImp implements ICpu {
@Override
public void run() {
System.out.println("苹果CPU");
}
}
显卡接口实现类
public class GFGrahImp implements IGraphicsCard {
@Override
public void run() {
System.out.println("GF显卡");
}
}
class AMDGrahImp implements IGraphicsCard {
@Override
public void run() {
System.out.println("AMD显卡");
}
}
客户端
public static void main(String[] args) {
//实现cpu接口的厂家
ICpu aCpu = new AppleCpuImp();
ICpu iCpu = new InterCpuImp();
ICpu amCpu = new AMDCpuImp();
//实现内存接口的实现类的厂商
IMemery kIMemery = new KingMemImp();
IMemery wgMemery = new WGMMemImp();
//实现显卡接口的实现类厂商
IGraphicsCard gfGra = new GFGrahImp();
IGraphicsCard amdGra = new AMDGrahImp();
//组装电脑
AComputer hp = new Hp();
hp.setComponent(kIMemery, gfGra, iCpu);
hp.comRun();
System.out.println("--------");
AComputer apple = new Apple();
apple.setComponent(wgMemery, amdGra, aCpu);
apple.comRun();
}
结果:
金士顿内存
GF显卡
InterCPU
WGM内存
AMD显卡
苹果CPU
2、春节回家,小明、小王、小李。三个步骤:①买票②使用交通工具③回家过年①与③两个步骤相同,已经实现了,②工具不同,分别是小明坐大巴,小王坐火车,小李坐飞机,请设计出他们的关系。并打印出每个人回家的三步骤。
/**
* 人作为抽象
*
*/
public abstract class Person {
void goHome() { //实现回家方法
System.out.println("回家过年!");
}
void buyTicket() { //实现买车票
System.out.println("买车票!");
}
abstract void byTools(); //交通工具抽象方法
void moduleMethod() {//模块方法设计模式,对要调用的方法封装,避免客户端调用复杂
buyTicket();
byTools();
goHome();
}
}
public class XiaoLi extends Person {
@Override
void byTools() {
System.out.println("小李坐飞机");
}
}
public class XiaoMing extends Person {
@Override
void byTools() {
System.out.println("小王坐火车");
}
}
public class XiaoWang extends Person {
@Override
void byTools() {
System.out.println("小明坐大巴");
}
}
public static void main(String[] args) {
Person xm = new XiaoMing();
xm.moduleMethod();
System.out.println("----------");
Person xl = new XiaoLi();
xl.moduleMethod();
}
结果:
买车票!
小王坐火车
回家过年!
买车票!
小李坐飞机
回家过年!