1. Trang chủ
  2. » Công Nghệ Thông Tin

[Code Pattern ôn thi]Kiến Trúc & Thiết Kế Phần Mềm PTIT

47 1,4K 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 47
Dung lượng 1,18 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

public abstract class Address { private String street; private String city; private String region; private String portalCode; public interface AddressfFactory { public Address createAddr

Trang 1

1 Abstract Factory…………1

2 Builder………5

3 Factory Method………7

4 Prototype………9

5 Singleton………11

6 Adapter………12

7 Bridge………13

8 Composite………16

9 Decorator………18

10 Façade………21

11 Flyweight………23

12 Proxy………24

13 Chain of Responsibility…25 14 Command………26

15 Interperter………28

16 Iterator………31

17 Mediator………32

18 Memento………33

19 Observer………35

20 State………37

21 Strategy………39

22 Template Method………40

23 Visitor………45

1 Abstract factory:

Trang 2

public abstract class Address {

private String street;

private String city;

private String region;

private String portalCode;

public interface AddressfFactory {

public Address createAddress();

public PhoneNumber createPhoneNumber();

}

Trang 3

public class FrenchAddress extends Address {

//Lay dia chi FRENCH

@Override

public String getCity() {

return "FRENCH";}

}

FrenchAddressFactory.java

public class FrenchAddressFactory implements AddressfFactory {

@Override

public Address createAddress() {

return new FrenchAddress();

}

@Override

public PhoneNumber createPhoneNumber() {

return new FrenchPhoneNumber();

public abstract class PhoneNumber {

private String name;

private int number;

Trang 4

public class Test {

public static void main(String[] args) {

AddressfFactory factory = new USAAddressfactory();

Address usaAddress = factory.createAddress();

System.out.println(usaAddress.getCity());

PhoneNumber usaPhoneNumber = factory.createPhoneNumber();usaPhoneNumber.setNumber(6789);

System.out.println(usaPhoneNumber.getNumber());

}

USAAddressfactory.java

public class USAAddressfactory implements AddressfFactory{

@Override

public Address createAddress() {

return new USAAddress();

}

@Override

public PhoneNumber createPhoneNumber() {

return new USAPhoneNumber();

Trang 5

public int getNumber() {

public class Address {

private String street;

private String city;

private String region;

Trang 6

public void setCity(String city) {

public class AddressDirector {

public void Contruct(USAAddressBuilder builder, String street, String city,

String region) {builder.builderCity(city);

public abstract class Builder {

abstract public void builderStreet(String street);

abstract public void builderCity(String city);

abstract public void builderRegion(String region);

}

Test.java

public class Test {

public static void main(String[] args) {

AddressDirector director = new AddressDirector();

USAAddressBuilder builder = new USAAddressBuilder();

director.Contruct(builder, "ABC", "CDE", "FGH");

Address address = builder.getAddress();

System.out.println(address.getStreet());

System.out.println(address.getCity());

System.out.println(address.getRegion());

}

}

Trang 7

public class USAAddressBuilder extends Builder {

private Address add = new Address();

public class Gioi extends XepLoai {

public Gioi(String name) {

Trang 8

public Kha(String name) {

super(name);

}

}

TB.java

public class TB extends XepLoai {

public TB(String name) {

super(name);

}

}

Yeu.java

public class Yeu extends XepLoai {

public Yeu(String name) {

super(name);

}

}

Test.java

public class Test {

public static void main(String[] args) {

public class XepLoai {

private String xepLoai;

public XepLoai(String name) {

this.xepLoai = name;

}

// Phương thức thông báo điểm TB va Xep Loai Hoc Sinh

public void showMessenge(float diem) {

System.out.println("Diem TB cu ban la : " + diem +" -> Xep loai Hoc Sinh :"+ xepLoai );

}

}

Trang 9

public class XepLoaiFactory {

public static XepLoai getInstance(float diem) {

if (diem < 5) {

return new Yeu("Yeu");

} else if (diem >= 5 && diem < 6.5) {

return new TB("TB");

} else if (diem >= 6.5 && diem < 8) {

return new Kha("Kha");

@Override

public void info() {

System.out.println("Thong tin cua Giao Vien :");}

@Override

Trang 10

public void info() {

System.out.println("Thong tin cua Hoc Sinh :");

}

}

NhanVien.java

public abstract class NhanVien implements Cloneable {

private String id;

protected String type;

abstract void info();

public String getType() {

public Object clone() {

Object clone = null;

public class PhanLoaiNhanVien {

private static Hashtable<String, NhanVien> NhanVien = new Hashtable<String, NhanVien>();

public static NhanVien getNV(String nvId) {

NhanVien phanLoaiNV = NhanVien.get(nvId);

return (NhanVien) phanLoaiNV.clone();

}

Trang 11

public static void phanLoai() {

GiaoVien giaoVien = new GiaoVien();

giaoVien.setId("1");

NhanVien.put(giaoVien.getId(), giaoVien);

HocSinh hocSinh = new HocSinh();

public class Test {

public static void main(String[] args) {

}

5 Singleton

FileLogger.java

public class FileLogger {

// Tao Logger toàn cục

private static FileLogger logger;

// Hàm khởi tạo de private de ko the bi goi

private FileLogger() { }

Trang 12

// Static tra ve 1 logger duy nhat

public static FileLogger getFileLogger() {

if (logger == null) {

logger = new FileLogger();

}

return logger;}

public class Adaptee {

public void specificRequest() {

JOptionPane.showMessageDialog( null, "Hello Design Pattern",

"from Adaptee", JOptionPane.OK_OPTION );

}

}

Adapter.java

package Adapter;

public class Adapter extends Target {

private Adaptee obj = new Adaptee();

public void operation() {

Trang 13

AdapterClient.java

package Adapter;

public class AdapterClient {

static public Target Create( String str ) {

if ( str.equals( "Target" ) ) return new Target();

if ( str.equals( "Adapter" ) ) return new Adapter();

return null;

}

static public void main( String[] args ) {

Target target1 = Create( "Target" );

Target target2 = Create( "Adapter" );

public class Target {

public void operation() {

System.out.println( "Hello Design Pattern" );

}}

7 Bridge

Trang 14

public class ConcreteImplementA implements MyImplementation {

@Override

public void doMthod1() {

System.out.println(" Mthod1 - A");

}

@Override

public void doMthod2() {

System.out.println(" Mthod2 - A");

public void doMthod1() {

System.out.println(" Mthod1 - B ");

}

@Override

public void doMthod2() {

System.out.println(" Mthod2 - B ");

}

}

MyAbstraction.java

public class MyAbstraction {

private MyImplementation myImp;

public MyAbstraction(MyImplementation myImp) {

this.myImp = myImp;

Trang 15

public interface MyImplementation {

public void doMthod1();

public void doMthod2();

}

RefineAbtraction1.java

public class RefineAbtraction1 extends MyAbstraction{

public RefineAbtraction1(MyImplementation myImp) {

public void method2() {

System.out.println("Mthod2 - RefineAbtraction1");}

}

RefineAbtraction2.java

public class RefineAbtraction2 extends MyAbstraction{

public RefineAbtraction2(MyImplementation myImp) {

super(myImp);

}

@Override

public void method1() {

System.out.println("Mthod1 - RefineAbtraction2");}

Trang 16

public class Test {

public static void main(String[] args) {

MyImplementation imp = new ConcreteImplementA();

MyAbstraction myAbs = new RefineAbtraction1(imp);

public class Project implements TaskItem {

private String name;

private ArrayList<TaskItem> subtask = new ArrayList<TaskItem>();

Trang 17

public void removeTaskItem(TaskItem item) {

subtask.remove(item);

}

}

Task.java

public class Task implements TaskItem {

private String name;

private double time;

public Task() {

}

Trang 18

public Task(String name, double time) {

public interface TaskItem {

public double getTime();

}

9 Decorator

Trang 19

public class Book implements LibraryItem {

private String title ;

private int page ;

public Book(String title, int page) {

public void display() {

System.out.println("Title : " + title);

System.out.println("Page number : + page ");

}

}

BookDecorator.java

public class BookDecorator extends LibDecorator {

private String borrower;

public BookDecorator(LibraryItem libraryItem, String borrower) {

public abstract class LibDecorator implements LibraryItem {

private LibraryItem libraryItem;

public LibDecorator(LibraryItem libraryItem) {

Trang 20

public interface LibraryItem {

public void display();

}

Video.java

public class Video implements LibraryItem{

private String title ;

private int minutes ;

public Video(String title, int minutes) {

public void display() {

System.out.println("Title : " + title);System.out.println("Time : + minutes ");}

}

VideoDecorator.java

public class VideoDecorator extends LibDecorator {

public VideoDecorator(LibraryItem libraryItem) {

Trang 21

public class Address {

private String address;

public String getAddress() {

public void display() {

System.out.println("Address: " + getAddress());}

}

Name.java

public class Name {

private String name;

public String getName() {

public void display() {

System.out.println("Name: " + getName());

}

}

Person.java

Trang 22

public class Person {

private Address address;

private PhoneNumber phone;

private Name name;

public Person(Address address, PhoneNumber phone, Name name) {

public class PhoneNumber {

private int phoneNumber;

public int getPhoneNumber() {

public void display() {

System.out.println("PhoneNumber: " + getPhoneNumber());}

}

11 Flyweight

Trang 23

public class CharacterFactory {

private Hashtable<String, Character> pool = new Hashtable<String, Character>();

public int getNum() {

return pool.size();

}

public Character get(String symbol, String fontFace) {

Character cString key = symbol + fontFace;

if ((c = (Characterr) pool.get(key)) != null) {

return ;} else {

c = new ConcreteCharacter(symbol, fontFace);

pool.put(key, c);

return ;}

}

}

Character.java

public interface Character {

public void draw();

}

ConcreteCharacter.java

public class ConcreteCharacter implements Character {

private String symbol;

private String font;

Trang 24

public void draw() {

System.out.println("Symbol " + this.symbol + " with font " + this.font);}

public void process() {

// TODO Auto-generated method stubSystem.out.println("GIF Image");

}

}

Image.java

public interface Image {

public void process();

}

ImageProxy.java

public class ImageProxy implements Image {

private Image image;

@Override

public void process() {

// TODO Auto-generated method stub

public void process() {

// TODO Auto-generated method stubSystem.out.println("JPG Image");

}

Trang 25

protected Approver Successor;

public abstract void HandleRequest(int money);

public void Next(Approver nextApprover)

public class BrotherApproval extends Approver{

public void HandleRequest(int money)

public class FatherApproval extends Approver{

public void HandleRequest(int money)

Trang 26

MotherApproval.java

public class MotherApproval extends Approver{

public void HandleRequest(int money)

public class Test{

public static void main(String[] args)

{

int[] money = {3, 30, 60, 100, 200, 500};

Approver brotherApproval = new BrotherApproval();

Approver motherApproval = new MotherApproval();

Approver fatherApproval = new FatherApproval();

brotherApproval.Next(motherApproval);

motherApproval.Next(fatherApproval);

for (int : money){

System.out.println("Request "+ +"k");

Trang 27

public interface Command {

public void execute();

}

ConcreateCommand.java

public class ConcreateCommand implements Command {

private Receiver receiver;

public Receiver getReceiver() {

public void execute() {

// TODO Auto-generated method stubreceiver.doAction();

}

}

Invoker.java

public class Invoker {

public void exacuteCommand(Command command) {

command.execute();

}

Trang 28

Receiver.java

public class Receiver {

private String name;

public Receiver(String name) {

super();

this.name = name;

}

public void doAction() {

System.out.println(this.name + "fullfill request!");

}

}

Test.java

public class Test {

public static void main(String[] args) {

ConcreateCommand command = new ConcreateCommand();

command.setReceiver(new Receiver("Tung"));

Invoker invoker = new Invoker();

public class Context{

public String input;

public int output;

Trang 29

là cách định nghĩa các chữ tương ứng với giá trị của nó.*/

abstract class Expression

abstract public String One();

abstract public String Four();

abstract public String Five();

abstract public String Nine();

abstract public int Multiplier();

}

HundredExpresssion.java

public class HundredExpresssion extends Expression{

public String One(){return "C";}

public String Four(){return "CD";}

public String Five(){return "D";}

public String Nine() {return "CM";}

public int Multiplier(){return 100;}

}

OneExpresssion.java

public class OneExpresssion extends Expression{

public String One(){return "I";}

public String Four(){return "IV";}

public String Five(){return "V";}

public String Nine() {return "IX";}

Trang 30

public int Multiplier(){return 1;}

}

TenExpresssion.java

public class TenExpresssion extends Expression{

public String One(){return "X";}

public String Four(){return "XL";}

public String Five(){return "L";}

public String Nine() {return "XC";}

public int Multiplier(){return 10;}

}

ThousandExpresssion.java

public class ThousandExpresssion extends Expression{

public String One(){return "M";}

public String Four(){return " ";}

public String Five(){return " ";}

public String Nine() {return " ";}

public int Multiplier(){return 1000;}

}

Test.java

/*

Doc so La Mã là từ trái sang phải cộng dồn

Nếu số nằm ngay bên phải một số có giá trị lớn hơn chính nó thì phải trừ đi nó

public class Test {

public static void main(String[] args){

String str;

String select = "C";

ArrayList<Expression> parse = new ArrayList();

Scanner scanIn=new Scanner(System.in);

while (select != "K" && select != "k"){

System.out.println("Nhap vao so La Ma : ");

Trang 31

for (Expression exp : parse)

public interface Container {

public Iterator getIterator();

}

Iterator.java

public interface Iterator {

public boolean hasNext();

public Object next();

}

IteratorPatternDemo.java

public class IteratorPatternDemo {

public static void main(String[] args) {

NameRepository namesRepository = new NameRepository();

for(Iterator iter = namesRepository.getIterator(); iter.hasNext(); ){ String name = (String)iter.next();

System.out.println("Name : " + name);

}

}

}

Trang 32

public class NameRepository implements Container {

public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};

@Override

public Iterator getIterator() {

return new NameIterator();

public class ChatRoom {

public static void showMessage(User user, String message){

System.out.println(new Date().toString()

+ " [" + user.getName() +"] : " + message);}

}

Trang 33

public class MediatorPatternDemo {

public static void main(String[] args) {

User robert = new User("Robert");

User john = new User("John");

robert.sendMessage("Hi! John!");

john.sendMessage("Hello! Robert!");}

}

User.java

public class User {

private String name;

public String getName() {

Ngày đăng: 25/05/2015, 23:19

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w