Java设计模式

Java设计模式


java中一共有23中设计模式
一共是可以分为3类:创造模式,结构模式和行为模式

  1. 创造设计模式

    • 工厂模式
    • 抽象工厂模式
    • 单例模式
    • 原型模式
    • Builder模式
  2. 结构设计模式

    • 调配器模式
    • 桥接模式
    • 组合模式
    • 装饰者模式
    • 外观模式
    • 享元模式
    • 代理模式
  3. 行为设计模式

    • 责任链模式
    • 命令模式
    • 解释器模式
    • 迭代器模式
    • 调解者(Mediator)模式
    • 备忘录模式
    • 观察者模式
    • 状态模式
    • 策略模式
    • 模板模式
    • 访问者模式
工厂模式
  1. 在工厂模式中,不创建逻辑暴露给客户端创建对象,并使用一个通用的接口引用新创建的对象。
    i. 创建一个接口

    public interface Sender {
    public void send();
    }

ii. 创建实现相同接口的具体类

public class SmsSender implements Sender {
    @Override
    public void send() {
        System.out.println("This is a sms sender");
    }
}


public class MailSender implements Sender {

@Override
public void send(){
    System.out.println("This is a mailsender");
}

}
iii. 创建工厂根据给定的信息生成具体的类的对象

public class SendFactory {
public Sender produce(String type) {
    if ("mail".equals(type)) {
        return new MailSender();
    } else if ("sms".equals(type)) {
        return new SmsSender();
    } else {
        System.out.println("请输入正确的类型");
        return null;
    }
}  
}

iv. 使用工厂通过传递类型等信息来获取具体类的对象。

public class FactoryTest {
  public static void main(String[] args) {
    SendFactory sendFactory = new SendFactory();
    Sender sender =  sendFactory.produce("sms");
    sender.send();
    }
}
抽象工厂模式

  抽象工厂模式是一个超级工厂,用来创建其他工厂。这个工厂也被称为工厂的工厂。这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。在抽象工厂模式中,接口负责创建相关对象的工厂,而不明确指定它们的类。每个生成的工厂可以按照工厂模式提供对象。
i. 创建一个Shape接口

public interface Shape {
void draw();
}

ii. 创建实现相同接口的具体类

public class Rectangle implements Shape{
@Override
public void draw() {
    System.out.println("Inside Rectangle::draw() method.");
}
}

public class Square implements Shape {
  @Override
  public void draw() {
  System.out.println("Inside Square::draw() method.");
   }
}

public class Circle implements Shape {
  @Override
 public void draw() {
  System.out.println("Inside Circle::draw() method.");
 }
}

iii. 创建一个Colors接口

public interface Color {
 void fill();
}

iv. 创建实现相同接口的具体类。

public class Red implements Color {
 @Override
 public void fill() {
      System.out.println("Inside Red::fill() method.");
     }
}

public class Green implements Color {
 @Override
 public void fill() {
      System.out.println("Inside Green::fill() method.");
 }
}

public class Blue implements Color {
 @Override
 public void fill() {
      System.out.println("Inside Blue::fill() method.");
 }
}

v. 创建实现相同接口的具体类。

public abstract class AbstractFactory {
abstract Color getColor(String color);
abstract Shape getShape(String shape) ;
 }

vi. 创建实现相同接口的具体类。
创建工厂类,根据给定信息扩展AbstractFactory以生成具体类的对象。

public class ShapeFactory extends AbstractFactory {
   @Override
  public Shape getShape(String shapeType){
  if(shapeType == null){
     return null;
  }
  if(shapeType.equalsIgnoreCase("CIRCLE")){
     return new Circle();
  }else if(shapeType.equalsIgnoreCase("RECTANGLE")){
     return new Rectangle();
  }else if(shapeType.equalsIgnoreCase("SQUARE")){
     return new Square();
  }
  return null;
}
@Override
Color getColor(String color) {
   return null;
  }
 }

public class ColorFactory extends AbstractFactory {
@Override
public Shape getShape(String shapeType){
   return null;
}
@Override
  Color getColor(String color) {
  if(color == null){
     return null;
  }        
  if(color.equalsIgnoreCase("RED")){
     return new Red();
  }else if(color.equalsIgnoreCase("GREEN")){
     return new Green();
  }else if(color.equalsIgnoreCase("BLUE")){
     return new Blue();
  }
  return null;
    }
 }

vii.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值