简单工厂模式
有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计,用JAVA语言实现 (或C#控制台应用程序实现)该OEM制造商的工厂模式。绘制该模式的UML图。
【模式UML图】
【模式代码(JAVA语言实现)】
Computer.java
package ComputerInterface;
public interface Computer {
public void ComputerType();
}
ComputerFactory.java
package ComputerInterface;
public interface ComputerFactory {
public Computer getComputerType();
}
Acer.java
package ComputerType;
import ComputerInterface.Computer;
public class Acer implements Computer{
@Override
public void ComputerType() {
System.out.println("ACER");
}
}
Dell.java
package ComputerType;
import ComputerInterface.Computer;
public class Dell implements Computer{
@Override
public void ComputerType() {
System.out.println("DELL");
}
}
Lenovo.java
package ComputerType;
import ComputerInterface.Computer;
public class Lenovo implements Computer{
@Override
public void ComputerType() {
System.out.println("LENOVO");
}
}
AcerFactory.java
package FactoryType;
import ComputerInterface.Computer;
import ComputerInterface.ComputerFactory;
import ComputerType.Acer;
public class AcerFactory implements ComputerFactory{
@Override
public Computer getComputerType() {
return new Acer();
}
}
DellFactory.java
package FactoryType;
import ComputerInterface.Computer;
import ComputerInterface.ComputerFactory;
import ComputerType.Dell;
public class DellFactory implements ComputerFactory{
@Override
public Computer getComputerType() {
return new Dell();
}
}
LenovoFactory.java
package FactoryType;
import ComputerInterface.Computer;
import ComputerInterface.ComputerFactory;
import ComputerType.Lenovo;
public class LenovoFactory implements ComputerFactory{
@Override
public Computer getComputerType() {
return new Lenovo();
}
}
FactoryMain.java
package FactoryMain;
import ComputerInterface.Computer;
import FactoryType.AcerFactory;
import FactoryType.DellFactory;
import FactoryType.LenovoFactory;
public class OEM_factoryMain {
public static void main(String[] args) {
System.out.println("OEM生产的电脑种类有:");
Computer computer;
//获取Dell电脑对象
computer = new DellFactory().getComputerType();
computer.ComputerType();
//获取Acer电脑对象
computer = new AcerFactory().getComputerType();
computer.ComputerType();
//获取Lenovo电脑对象
computer = new LenovoFactory().getComputerType();
computer.ComputerType();
}
}
【运行截图】
抽象工厂模式
麦当劳(McDonalds)和肯德基(KFC)快餐店都经营汉堡(Hamburg)和可乐(Cole),用JAVA语言实现(C#控制台应用程序实现)这两个快餐店经营产品的抽象工厂模式。绘制该模式的UML图。
【模式UML图】
【模式代码】
KFCCola.java
package ColaType;
import Interfaces.ColaItf;
public class KFCCola implements ColaItf{
@Override
public void getCole() {
System.out.println("KFC生产的Cola");
}
}
McDanaldsCola.java
package ColaType;
import Interfaces.ColaItf;
public class McDanaldsCola implements ColaItf{
@Override
public void getCole() {
System.out.println("McDanalds生产的Cola");
}
}
KFCFactory.java
package FactoryType;
import ColaType.KFCCola;
import HamburgType.KFCHB;
import Interfaces.ColaItf;
import Interfaces.FactoryItf;
import Interfaces.HamburgItf;
public class KFCFactory implements FactoryItf{
@Override
public HamburgItf createHamburg() {
return new KFCHB();
}
@Override
public ColaItf createCole() {
return new KFCCola();
}
}
McDanaldsFactory.java
package FactoryType;
import ColaType.McDanaldsCola;
import HamburgType.McDonaldsHB;
import Interfaces.ColaItf;
import Interfaces.FactoryItf;
import Interfaces.HamburgItf;
public class McDanaldsFactory implements FactoryItf{
@Override
public HamburgItf createHamburg() {
return new McDonaldsHB();
}
@Override
public ColaItf createCole() {
return new McDanaldsCola();
}
}
KFCHB.java
package HamburgType;
import Interfaces.HamburgItf;
public class KFCHB implements HamburgItf{
@Override
public void getHamburg() {
System.out.println("KFC生产的Hamburg");
}
}
McDanaldsHB.java
package HamburgType;
import Interfaces.HamburgItf;
public class McDonaldsHB implements HamburgItf{
@Override
public void getHamburg() {
System.out.println("McDonalds生产的Hamburg");
}
}
Colaitf.java
package Interfaces;
public interface ColaItf {
public void getCole();
}
FactoryItf.java
package Interfaces;
public interface FactoryItf {
public HamburgItf createHamburg();
public ColaItf createCole();
}
HamburgItf.java
package Interfaces;
public interface HamburgItf {
public void getHamburg();
}
FactoryMain.java
package FactoryMain;
import FactoryType.KFCFactory;
import FactoryType.McDanaldsFactory;
public class factoryMain {
public static void main(String[] agrs) {
System.out.println("McDanalds的汉堡和可乐:");
McDanaldsFactory factory1 = new McDanaldsFactory();
factory1.createHamburg().getHamburg();
factory1.createCole().getCole();
System.out.println("----------------------");
System.out.println("KFC的汉堡和可乐:");
KFCFactory factory2 = new KFCFactory();
factory2.createHamburg().getHamburg();
factory2.createCole().getCole();
}
}
【运行截图】