简单工厂
写于 2024-10-09
类图

代码实现
java
/* 简单工厂 */
// 接口
public interface Product {
public void Find();
public void Rent();
public void Calculate();
public void Return();
}
// 具体实现的类
public class Bicycle implements Product {
public void Find(){
System.out.println("FactoryA.Bicycle.Find");
}
public void Rent(){
System.out.println("FactoryA.Bicycle.Rent");
}
public void Calculate(){
System.out.println("FactoryA.Bicycle.Calculate");
}
public void Return(){
System.out.println("FactoryA.Bicycle.Return");
}
}
public class ElectricBikesA implements Product{
public void Find(){
System.out.println("FactoryA.ElectricBikesA.Find");
}
public void Rent(){
System.out.println("FactoryA.ElectricBikesA.Rent");
}
public void Calculate(){
System.out.println("FactoryA.ElectricBikesA.Calculate");
}
public void Return(){
System.out.println("FactoryA.ElectricBikesA.Return");
}
}
public class ElectricBikesB implements Product{
public void Find(){
System.out.println("FactoryB.ElectricBikesB.Find");
}
public void Rent(){
System.out.println("FactoryB.ElectricBikesB.Rent");
}
public void Calculate(){
System.out.println("FactoryB.ElectricBikesB.Calculate");
}
public void Return(){
System.out.println("FactoryB.ElectricBikesB.Return");
}
}
public class Factory{
public Product createProduct(string s){
if(s.equals("Bicycle")){
return new Bicycle();
}else if (s.equals("ElectricBikesA")){
return new ElectricBikesA();
}else if (s.equals("ElectricBikesB")){
return new ElectricBikesB();
}
return null;
}
}
// 客户端
public class demo {
public demo(){
Factory factory = new Factory();
Product bicycle = factory.createProduct("Bicycle");
bicycle.Find();
bicycle.Rent();
bicycle.Calculate();
bicycle.Return();
Product electricBikesA = factory.createProduct("ElectricBikesA");
electricBikesA.Find();
electricBikesA.Rent();
electricBikesA.Calculate();
electricBikesA.Return();
Product electricBikesB = factory.createProduct("ElectricBikesB");
electricBikesB.Find();
electricBikesB.Rent();
electricBikesB.Calculate();
electricBikesB.Return();
}
}工厂模式
类图

代码实现
java
/* 工厂模式 */
// 接口
public interface Product {
public void Find();
public void Rent();
public void Calculate();
public void Return();
}
public interface Factory {
public Product createProduct();
}
// 具体实现的类
public class Bicycle implements Product {
public void Find(){
System.out.println("FactoryA.Bicycle.Find");
}
public void Rent(){
System.out.println("FactoryA.Bicycle.Rent");
}
public void Calculate(){
System.out.println("FactoryA.Bicycle.Calculate");
}
public void Return(){
System.out.println("FactoryA.Bicycle.Return");
}
}
public class ElectricBikesA implements Product{
public void Find(){
System.out.println("FactoryA.ElectricBikesA.Find");
}
public void Rent(){
System.out.println("FactoryA.ElectricBikesA.Rent");
}
public void Calculate(){
System.out.println("FactoryA.ElectricBikesA.Calculate");
}
public void Return(){
System.out.println("FactoryA.ElectricBikesA.Return");
}
}
public class ElectricBikesB implements Product{
public void Find(){
System.out.println("FactoryB.ElectricBikesB.Find");
}
public void Rent(){
System.out.println("FactoryB.ElectricBikesB.Rent");
}
public void Calculate(){
System.out.println("FactoryB.ElectricBikesB.Calculate");
}
public void Return(){
System.out.println("FactoryB.ElectricBikesB.Return");
}
}
public class BicycleFactoryA implements Factory{
public Product createProduct(){
return new Bicycle();
}
}
public class ElectricBikesFactoryA implements Factory{
public Product createProduct(){
return new ElectricBikesA();
}
}
public class ElectricBikesFactoryB implements Factory{
public Product createProduct(){
return new ElectricBikesB();
}
}
// 客户端
public class demo {
public demo(){
BicycleFactoryA bicycleFactoryA = new BicycleFactoryA();
ElectricBikesFactoryA electricBikesFactoryA = new ElectricBikesFactoryA();
ElectricBikesFactoryB electricBikesFactoryB = new ElectricBikesFactoryB();
Product bicycle = bicycleFactoryA.createProduct();
bicycle.Find();
bicycle.Rent();
bicycle.Calculate();
bicycle.Return();
Product electricBikesA = electricBikesFactoryA.createProduct();
electricBikesA.Find();
electricBikesA.Rent();
electricBikesA.Calculate();
electricBikesA.Return();
Product electricBikesB = electricBikesFactoryB.createProduct();
electricBikesB.Find();
electricBikesB.Rent();
electricBikesB.Calculate();
electricBikesB.Return();
}
}抽象工厂
类图

代码实现
java
/* 抽象工厂模式 */
// 接口
public interface Product {
public void Find();
public void Rent();
public void Calculate();
public void Return();
}
public interface Factory {
public Product createElectricBikes();
public Product createBicycle();
}
// 具体实现的类
public class Bicycle implements Product {
public void Find(){
System.out.println("FactoryA.Bicycle.Find");
}
public void Rent(){
System.out.println("FactoryA.Bicycle.Rent");
}
public void Calculate(){
System.out.println("FactoryA.Bicycle.Calculate");
}
public void Return(){
System.out.println("FactoryA.Bicycle.Return");
}
}
public class ElectricBikesA implements Product{
public void Find(){
System.out.println("FactoryA.ElectricBikesA.Find");
}
public void Rent(){
System.out.println("FactoryA.ElectricBikesA.Rent");
}
public void Calculate(){
System.out.println("FactoryA.ElectricBikesA.Calculate");
}
public void Return(){
System.out.println("FactoryA.ElectricBikesA.Return");
}
}
public class ElectricBikesB implements Product{
public void Find(){
System.out.println("FactoryB.ElectricBikesB.Find");
}
public void Rent(){
System.out.println("FactoryB.ElectricBikesB.Rent");
}
public void Calculate(){
System.out.println("FactoryB.ElectricBikesB.Calculate");
}
public void Return(){
System.out.println("FactoryB.ElectricBikesB.Return");
}
}
public class FactoryA implements Factory{
public Product createElectricBikes(){
return new ElectricBikesA();
}
public Product createBicycle(){
return new Bicycle();
}
}
public class FactoryB implements Factory{
public Product createElectricBikes(){
return new ElectricBikesB();
}
public Product createBicycle(){
return null;
}
}
// 客户端
public class demo {
public demo(){
BicycleFactoryA bicycleFactoryA = new BicycleFactoryA();
FactoryA factoryA = new FactoryA();
FactoryB factoryB = new FactoryB();
Product bicycle = factoryA.createBicycle();
bicycle.Find();
bicycle.Rent();
bicycle.Calculate();
bicycle.Return();
Product electricBikesA = factoryA.createElectricBikes();
electricBikesA.Find();
electricBikesA.Rent();
electricBikesA.Calculate();
electricBikesA.Return();
Product electricBikesB = factoryB.createElectricBikes();
electricBikesB.Find();
electricBikesB.Rent();
electricBikesB.Calculate();
electricBikesB.Return();
}
}