创建型模式(5)
单例模式
package site.yuanrui.establish;
public class SinglePattern {
public static void main(String[] args) {
System.out.println("Singleto:"+(Singleton.getInstance()!=null));
System.out.println("Singleto2:"+(Singleton2.getInstance()!=null));
}
}
class Singleton{
private static Singleton singleton = new Singleton();
private Singleton(){
}
public static Singleton getInstance() {
return singleton;
}
}
class Singleton2{
private static Singleton2 singleton2;
private Singleton2(){
}
public static synchronized Singleton2 getInstance(){
if (singleton2 ==null) {
singleton2 = new Singleton2();
}
return singleton2;
}
}
工厂模式
package site.yuanrui.establish;
public class FactoryPattern {
public static void main(String[] args) {
IFactory factory = new Factory();
IProduct product = factory.createProduct();
product.productMethod();
}
}
interface IProduct{
public void productMethod();
}
class Product implements IProduct{
@Override
public void productMethod() {
System.out.println("Product");
}
}
interface IFactory{
public IProduct createProduct();
}
class Factory implements IFactory{
@Override
public IProduct createProduct() {
return new Product();
}
}
抽象工厂模式
package site.yuanrui.establish;
public class AbstractFactoryPattern {
public static void main(String[] args) {
IFactory1 factory = new Facctory();
factory.createProduct1().show();
factory.createProduct2().show();
}
}
interface IProduct1{
public void show();
}
interface IProduct2{
public void show();
}
class Product1 implements IProduct1{
@Override
public void show() {
System.out.println("这是I型产品");
}
}
class Product2 implements IProduct2{
@Override
public void show() {
System.out.println("这是II型产品");
}
}
interface IFactory1{
public IProduct1 createProduct1();
public IProduct2 createProduct2();
}
class Facctory implements IFactory1{
@Override
public IProduct1 createProduct1() {
return new Product1();
}
@Override
public IProduct2 createProduct2() {
return new Product2();
}
}
建造者模式
package site.yuanrui.establish.builderPattern;
public class BuilderPattern {
public static void main(String[] args) {
Director director = new Director();
Product product1 = director.getAProduct();
Product product2 = director.getBPorduct();
product1.showProduct();
product2.showProduct();
}
}
class Product{
private String name;
private String type;
public void showProduct(){
System.out.println("名称:"+this.name);
System.out.println("型号:"+this.type);
}
public void setName(String name){
this.name = name;
}
public void setType(String type){
this.type = type;
}
}
abstract class Builder{
public abstract void setPart(String arg1,String arg2);
public abstract Product getProduct();
}
class ConcreteBuilder extends Builder{
private Product product = new Product();
public Product getProduct(){
return product;
}
@Override
public void setPart(String arg1, String arg2) {
product.setName(arg1);
product.setType(arg2);;
}
}
class Director{
private Builder builder = new ConcreteBuilder();
public Product getAProduct(){
builder.setPart("宝马汽车", "X7");
return builder.getProduct();
}
public Product getBPorduct(){
builder.setPart("奥迪汽车", "Q5");
return builder.getProduct();
}
}
原型模式
package site.yuanrui.establish;
public class PrototypePattern {
public static void main(String[] args) {
ConcretePrototype cp = new ConcretePrototype();
for (int i = 0; i < 10; i++) {
ConcretePrototype clonecp = (ConcretePrototype) cp.clone();
clonecp.show();System.out.println(i);
}
}
}
class Prototype implements Cloneable{
public Prototype clone(){
Prototype prototype = null;
try {
prototype = (Prototype) super.clone();
}
catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return prototype;
}
}
class ConcretePrototype extends Prototype{
public void show() {
System.out.print("原型模式实现类");
}
}
结构型模式(7)
适配器模式
package site.yuanrui.structure;
import com.sun.org.apache.xerces.internal.impl.dv.ValidatedInfo;
public class AdapterPattern {
public static void main(String[] args) {
Target target = new Adapter(new Adaptee());
target.adapteeMethod();
target.adapterMethod();
}
}
interface Target{
void adapteeMethod();
void adapterMethod();
}
class Adaptee{
public void adapteeMethod(){
System.out.println("Adaptee method!");
}
}
class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void adapteeMethod() {
adaptee.adapteeMethod();
}
@Override
public void adapterMethod() {
System.out.println("Adapter method!");
}
}
桥接模式
package site