java设计模式有哪些常用的?有几种分类?

TheDisguiser 2020-08-21 16:36:00 java常见问答 7291

想要写出一套漂亮的代码,设计模式就一定要谨慎选择,今天,小编就带大家了解下常见的设计模式及分类。

工厂模式

interface food
{}
class A implements food
{}
class B implements food
{}
class C implements food
{}
public class StaticFactory
{
    private StaticFactory()
    {}
    public static food getA()
    {
        return new A();
    }
    public static food getB()
    {
        return new B();
    }
    public static food getC()
    {
        return new C();
    }
}
class Client
{
    //客户端代码只需要将相应的参数传入即可得到对象
    //用户不需要了解工厂类内部的逻辑。
    public void get(String name)
    {
        food x = null;
        if (name.equals("A"))
        {
            x = StaticFactory.getA();
        }
        else if (name.equals("B"))
        {
            x = StaticFactory.getB();
        }
        else
        {
            x = StaticFactory.getC();
        }
    }
}

单例模式

class Singleton
{
    private static Singleton instance = new Singleton(); // 在内部产生本类的实例化对象    
    public static Singleton getInstance()
    { // 通过静态方法返回instance对象    
        return instance;
    }
    private Singleton()
    { // 将构造方法封装为私有化    
    }
    public void print()
    {
        System.out.println("Hello World!!!");
    }
}
public class SingletonDemo
{
    public static void main(String args[])
    {
        Singleton s1 = null; // 声明对象    
        Singleton s2 = null; // 声明对象    
        Singleton s3 = null; // 声明对象    
        s1 = Singleton.getInstance(); // 取得实例化对象    
        s2 = Singleton.getInstance(); // 取得实例化对象    
        s3 = Singleton.getInstance(); // 取得实例化对象    
        s1.print(); // 调用方法     
        s2.print(); // 调用方法     
        s3.print(); // 调用方法     
    }
}

适配器模式

适配器模式的作用就是在原来的类上提供新功能。主要可分为3种:

类适配:创建新类,继承源类,并实现新接口,例如

class adapter extends oldClass implements newFunc{}

对象适配:创建新类持源类的实例,并实现新接口,例如

class adapter implements newFunc { private oldClass oldInstance ;}

接口适配:创建新的抽象类实现旧接口方法。例如

abstract class adapter implements oldClassFunc { void newFunc();}

代理模式

interface Network
{ // 定义Network接口    
    public void browse(); // 定义浏览的抽象方法    
}
class Real implements Network
{ // 真实的上网操作    
    public void browse()
    { // 覆写抽象方法    
        System.out.println("上网浏览信息!");
    }
}
class Proxy implements Network
{ // 代理上网    
    private Network network;
    public Proxy(Network network)
    { // 设置代理的真实操作    
        this.network = network; // 设置代理的子类    
    }
    public void check()
    { // 身份验证操作    
        System.out.println("检查用户是否合法!");
    }
    public void browse()
    {
        this.check(); // 调用具体的代理业务操作    
        this.network.browse(); // 调用真实的上网操作    
    }
}
public class ProxyDemo
{
    public static void main(String args[])
    {
        Network net = null; // 定义接口对象    
        net = new Proxy(new Real()); // 实例化代理,同时传入代理的真实操作    
        net.browse(); // 调用代理的上网操作     
    }
}

总体来说,java设计模式可以分为以下三种类型:

创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。

结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。

行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

以上就是本篇文章的所有内容,更多相关java入门知识可以关注本站了解详情。

推荐阅读:

MVC设计模式是什么?MVC框架是什么?

java多线程设计模式怎么实现?

微服务架构设计模式有哪些?有什么好处?