面向对象设计原则/常用设计模式

2019-10-16  本文已影响0人  哇楼主

面向对象设计原则

常用设计模式:

public class Singleton {
//构造方法私有化,防止在外部被实例化
private Singleton() {}

private static volatile Singleton instance = null;

public static synchronized Singleton getInstance(){//同步,保证多线程唯一
    if (instance == null){
        instance = new Singleton();
    }
    return instance;
}
}
interface AbstractFactory
{
public Product1 newProduct1();
public Product2 newProduct2();
}
class ConcreteFactory1 implements AbstractFactory
{
 public Product1 newProduct1()
 {
    System.out.println("具体工厂 1 生成-->具体产品 11...");
    return new ConcreteProduct11();
 }
 public Product2 newProduct2()
 {
    System.out.println("具体工厂 1 生成-->具体产品 21...");
    return new ConcreteProduct21();
  }
 }
public class ProxyTest
{
public static void main(String[] args)
{
    Proxy proxy=new Proxy();
    proxy.Request();
}
}
//抽象主题
interface Subject
{
void Request();
}
//真实主题
class RealSubject implements Subject
{
public void Request()
{
    System.out.println("访问真实主题方法...");
}
}
//代理
class Proxy implements Subject
{
private RealSubject realSubject;
public void Request()
{
    if (realSubject==null)
    {
        realSubject=new RealSubject();
    }
    preRequest();
    realSubject.Request();
    postRequest();
}
public void preRequest()
{
    System.out.println("访问真实主题之前的预处理。");
}
public void postRequest()
{
    System.out.println("访问真实主题之后的后续处理。");
}
}
//目标接口
interface Target
{
public void request();
}
//适配者接口
class Adaptee
{
public void specificRequest()
{       
    System.out.println("适配者中的业务代码被调用!");
}
}
//类适配器类
class ClassAdapter extends Adaptee implements Target
{
public void request()
{
    specificRequest();
}
}
//客户端代码
 public class ClassAdapterTest
{
 public static void main(String[] args)
{
    System.out.println("类适配器模式测试:");
    Target target = new ClassAdapter();
    target.request();
}
}
上一篇 下一篇

猜你喜欢

热点阅读